Oppure

Loading
13/01/13 22:32
dpstart
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:
#include<stdio.h>
#include<stdlib.h>


int answer;
float num1, num2, r;
char cont;

	int main () {
		
do{	do{
	   printf("What operation do you want me to do?\n 1.Add\n 2.Subtract\n 3.Multiply\n 4.Divide\n");
           scanf("%d", &answer);}
	while(answer>1 && answer<5);

	printf("insert two numbers: ");
        scanf("%f ", &num1);
	scanf("%f", &num2);

        switch(answer) {
	  case 1: r=num1+num2;
	   break;
	  case 2: r=num1-num2;
	   break;
	  case 3: r=num1*num2;
	    break;
	  case 4: r=num1/num2;
	    break;
	  }

       printf("The result is %f\n :", r);

       printf("Do u want to continue?(Y/N) ");
       scanf("%c", &cont);
	} while(toupper(cont)=='Y');

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 13/01/13 22:34
aaa
14/01/13 9:31
Devi ripulire il buffer di input per evitare problemi con l'ultima scanf.

Prima di

scanf("%c", &cont);

devi scrivere

while(getchar()!='\n');
14/01/13 18:00
quello che non so come si chiama
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)
aaa
15/01/13 23:13
dpstart
Grazie mille ho risolto :)
aaa