TaschenRechner mit Switch Case
-
#include <conio.h> #include <stdio.h> #include <windows.h> double funktion1(double a); double funktion2(double b); double funktion3(double c); double funktion4(double d); int main() { char wenn='a'; char rechnung; double ergebniss; int quit; while(wenn!='q') { printf("Geben sie bitte die Rechenart ein\n+=Additionsrechnung\n-=Subtraktionsrechnung\n*=;Multiplikationsrechnung\n/=Divisionsrechnung\nq=Beenden\n\nIhre Eingabe: "); scanf("%c",&rechnung); switch(rechnung) { case'+': ergebniss=funktion1(rechnung); printf("\nDas Ergebniss der Addition : %lf\n\n",ergebniss); break; case'-': ergebniss=funktion2(rechnung); printf("Das Ergebniss der Subtraktion: %lf\n\n",ergebniss); break; case'*': ergebniss=funktion3(rechnung); printf("Das Ergebniss der Muliplikation: %lf\n\n",ergebniss); break; case'/': ergebniss=funktion4(rechnung); printf("Das Ergebnis der Division: %lf\n\n",ergebniss); break; case'q': wenn='q'; default: printf("\nFalsch Eingabe!\n"); wenn='a'; } } } double funktion1(double a) { double zahl1,zahl2,ergebniss; printf("\n\nAddition! Geben sie bitte Zahl1 ein : "); scanf("%lf",&zahl1); printf("\nGeben sie bitte Zahl2 ein : "); scanf("%lf",&zahl2); ergebniss=zahl1+zahl2; return ergebniss; } double funktion2(double b) { double zahl1,zahl2,ergebniss; printf("\n\nSubtraktion! Geben sie bitte Zahl1 ein : "); scanf("%lf",&zahl1); printf("\nGeben sie bitte Zahl2 ein : "); scanf("%lf",&zahl2); ergebniss=zahl1-zahl2; return ergebniss; } double funktion3(double c) { double zahl1,zahl2,ergebniss; printf("\n\nMultiplikation! Geben sie bitte Zahl1 ein : "); scanf("%lf",&zahl1); printf("\nGeben sie bitte Zahl2 ein : "); scanf("%lf",&zahl2); ergebniss=zahl1*zahl2; return ergebniss; } double funktion4(double d) { double zahl1,zahl2,ergebniss; printf("\n\nDivision! Geben sie bitte Zahl1 ein : "); scanf("%lf",&zahl1); printf("\nGeben sie bitte Zahl2 ein : "); scanf("%lf",&zahl2); ergebniss=zahl1/zahl2; return ergebniss; }
Das Problem bei dem Programm ist, wenn es sich wiederholt kommt 2mal Hintereinander dieser Text:
Geben sie bitte die Rechenart ein
+=Additionsrechnung
-=Subtraktionsrechnung
*=;Multiplikationsrechnung
/=Divisionsrechnung
q=BeendenIhre Eingabe: a
Falsch Eingabe!
Geben sie bitte die Rechenart ein
+=Additionsrechnung
-=Subtraktionsrechnung
*=;Multiplikationsrechnung
/=Divisionsrechnung
q=BeendenIhre Eingabe:
Falsch Eingabe!
Geben sie bitte die Rechenart ein
+=Additionsrechnung
-=Subtraktionsrechnung
*=;Multiplikationsrechnung
/=Divisionsrechnung
q=BeendenIhre Eingabe:
-
hab das problem gelöst indem ich
case'+':
ergebniss=funktion1(rechnung);
printf("\nDas Ergebniss der Addition : %lf\n\n",ergebniss);
scanf("%c",&wenn);break;
am ende jeder case verzweinungs ein scanf mache aber dies ergibt keinen sinn da nichtmal eine eingabe gefordert wird
:Sich versteh das nich o0 help plox
-
Dein Tastaturpuffer ist nach der Berechnung nicht leer, das
scanf("%lf",&zahl2);
läßt wohl noch was im Puffer, den erst ein weiteres scanf ausleert.
Alternativ könntest Du eine Minifunktion schreiben und aufrufen, die per getch bis zum "\n" liest.
EDIT: Achja, war ja kürzlich hier zu lesen