PDA

Visualizza la versione completa : Calcolatrice semplice in C


minidiable
08-10-2010, 00:07
Ciao a tutti, sto impazzendo con questo programma semplicissimo...dovete eseguirlo per capire...penso...

vorrei che la calcolatrice si iterasse all'infinito dopo la prima iterazione...la prima operazione funziona, poi quando vado a mettere il secondo operatore e relativo numero è come se prendesse l'operatore come carattere vuoto (anzi è così...perchè mi stampa un carattere vuoto se gli chiedo di stamparmi l'operatore)...mi sapete aiutare???

GRAZIE

ecco il codice...

#include <stdio.h>
#include <math.h>
#include <conio.h>

using namespace std;

float a,b;
float result=0.0;
char o;
bool go=true;

int main()
{
printf("...Calculator is ON...\n\n");
while(1){
printf("\nresult= %f",result);
printf("\ninsert the operator((+ - * /):");
char o = getchar();
while (getchar() != '\n');
printf("\nInserire numero da sommare:");
scanf("%f",&a);
printf("operator is : %c",o);
if (o=='+')
result=result+a;
else if(o=='-')
result=result-a;
else if(o=='*')
result=a*result;
else if(o=='/')
result=result/a;
else
printf("\nIMPOSSIBLE!");
//printf("\nrisultato: %f",c);
}
getch();
return(0);
}

MrX87
08-10-2010, 01:36
guarda ci sono dei problemi quando vai a fare questa istruzione:

char o = getchar();
in quanto la prima iterazione ti va bene, ma inseguito la getchar() fa casino con il '\n' penso!
perchè la getchar() di sopra va a leggere l'invio (\n) che dai quando premi invio per inserire il numero da sommare! non so se mi sono spiegato bene...il tutto è risolvibile in questo semplice modo anche se magari non tutti apprezzano forse...ma se qualcuno ha una soluzione migliore...può suggertirtela...io per ora ti posto la mia!


#include <stdio.h>
#include <stdlib.h>

float a,b;
float result=0.0;
char o;
char invio; // \n da prendere e buttare sostanzialmente

int main()
{
printf("...Calculator is ON...\n\n");
while(1){
printf("\nresult= %f",result);
printf("\ninsert the operator((+ - * /):");
char o = getchar();
printf ("SUKA STO CAZZO LA VAR O È: %c\n", o);
while (getchar() != '\n');
printf("\nInserire numero da sommare:");
scanf("%f%c",&a, &invio);
printf("operator is : %c",o);
if (o=='+')
result=result+a;
else if(o=='-')
result=result-a;
else if(o=='*')
result=a*result;
else if(o=='/')
result=result/a;
else
printf("\nIMPOSSIBLE!");
//printf("\nrisultato: %f",c);
}
getch();
return(0);
}
con la variabile char invio, vado ad immagazinare il \n che si genera appena premo invio per insierire il numero in modo da far eseguire correttamente la getchar()!
se trovi altri errori o se nn mi sn spiegato bene...scrivi qua...
ciao

simo_85
09-10-2010, 07:53
Originariamente inviato da MrX87

printf ("SUKA STO CAZZO LA VAR ... ); :incupito:
@ minidiable


scanf("%f%*c",&..);

Dovrebbe andar bene.
Se poi vuoi iterare puoi usare il ciclo do-while.

gennahouse
09-10-2010, 10:47
printf ("SUKA STO CAZZO LA VAR ... );


Non credo che da regolamento puoi postare frasi del genere, però mi ha fatto ridere...

YuYevon
09-10-2010, 12:07
Probabilmente era una printf() di debug che ha dimenticato di togliere :yuppi:

MrX87
09-10-2010, 15:15
OOOOPPPPPSSSSSSSS

Non credo che da regolamento puoi postare frasi del genere, però mi ha fatto ridere...
bhè si ineffetti non penso proprio si potrebbe...però come suggerisce YuYevon:

Probabilmente era una printf() di debug che ha dimenticato di togliere
era solo una printf "molto creativa" per il debug che mi sono dimenticato di cancellare....chiedo scusa a tutti...spero non capiterà più!
ciao ciao

Loading