Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Problema con programma per calcoli
Forum - C/C++ - Problema con programma per calcoli

Avatar
dpstart (Normal User)
Newbie


Messaggi: 5
Iscritto: 13/01/2013

Segnala al moderatore
Postato alle 23:32
Domenica, 13/01/2013
Salve a tutti :) Sto facendo qualche esercizio per prendere un pò la mano col C, e ho quindi provato ad implementare questo programma che esegue addizioni, sottrazioni, moltiplicazioni e divisioni:
Codice sorgente - presumibilmente C++

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4.  
  5. int answer;
  6. float num1, num2, r;
  7. char cont;
  8.  
  9.         int main () {
  10.                
  11. do{     do{
  12.            printf("What operation do you want me to do?\n 1.Add\n 2.Subtract\n 3.Multiply\n 4.Divide\n");
  13.            scanf("%d", &answer);}
  14.         while(answer>1 && answer<5);
  15.  
  16.         printf("insert two numbers: ");
  17.         scanf("%f ", &num1);
  18.         scanf("%f", &num2);
  19.  
  20.         switch(answer) {
  21.           case 1: r=num1+num2;
  22.            break;
  23.           case 2: r=num1-num2;
  24.            break;
  25.           case 3: r=num1*num2;
  26.             break;
  27.           case 4: r=num1/num2;
  28.             break;
  29.           }
  30.  
  31.        printf("The result is %f\n :", r);
  32.  
  33.        printf("Do u want to continue?(Y/N) ");
  34.        scanf("%c", &cont);
  35.         } while(toupper(cont)=='Y');
  36.  
  37. return 0; }



Il problema è che eseguendolo mi da alcuni problemi: accetta solo l'opzione 1, e inoltre termina prima di poter rispondere a "Do u want to continue?"

Qualcuno saprebbe spiegarmi gli errori che ho commesso? Grazie in anticipo.

Ultima modifica effettuata da dpstart il 13/01/2013 alle 23:34
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6403
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 10:31
Lunedì, 14/01/2013
Devi ripulire il buffer di input per evitare problemi con l'ultima scanf.

Prima di

scanf("%c", &cont);

devi scrivere

while(getchar()!='\n');


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
quello che non so come si chiama (Normal User)
Rookie


Messaggi: 37
Iscritto: 08/01/2013

Segnala al moderatore
Postato alle 19:00
Lunedì, 14/01/2013
per quanto riguarda le opzioni rifiutate prova così:
while(answer<1 || answer>4);

Attualmente tu gli stai dicendo di richiederti l'operazione da eseguire quando l'answerè compresa tra 1 e 5(2,3,4)

PM Quote
Avatar
dpstart (Normal User)
Newbie


Messaggi: 5
Iscritto: 13/01/2013

Segnala al moderatore
Postato alle 0:13
Mercoledì, 16/01/2013
Grazie mille ho risolto :)

PM Quote