Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. 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: 5714
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