Hallo,
habe mal einen kleinen Taschenrechner in C++ programmiert und habe ein kleines Problem =)
Ersteinmal der Code:
Alles anzeigen
Wenn ich nun bei der Menüauswahl eine auswahl einlesen will und ein Buchstabe eingelesen wird, statt einer Zahl, läuft das Programm in einer Endlosschleife und spuckt halt immer"Falsche Eingabe, wiederholen" aus.Ich glaube es liegt an der Schleife. Bitte um eine kleine Hilfe.
PS:Nicht erscrehcken bei dem Code da sind noch ein paar "tote" Teile drin die ich noch bearbeiten will.
Schonmal Danke im Vorraus!
habe mal einen kleinen Taschenrechner in C++ programmiert und habe ein kleines Problem =)
Ersteinmal der Code:
Quellcode
- #include <iostream>
- #include <conio.h>
- #include <stdlib.h>
- #include <cmath>
- #include <iomanip>
- using namespace std;
- long double calculate(int ausw, long double x, long double y); //deklaration der funktion 'calculate'
- long double prozent(int ausw, long double x, long double y);
- int main()
- {
- int auswahl; //deklaration der Variablen für die Funktion 'main'
- long double a = 0.0;
- long double b = 0.0;
- long double ergebnis = 0.0;
- char antwort;
- do //Schleife fürs Auswahl-Menü die nur solange gilt
- { //wie die Antwort gleich 'j' ist
- cout << "Calculator v0.9_RC_1\n" << endl;
- cout << "|==============|\n\n";
- cout << "[1]Addition\n"<<
- "[2]Subtraktion\n"<< //Auswahl-Menü
- "[3]Multiplikation\n"<<
- "[4]Division\n"<<
- "[5]Quadrieren\n"<<
- "[6]Wurzel ziehen\n"<<
- "[7]Prozentrechnung\n"<<
- "[0]Beenden\n\n";
- cout << "Waehlen sie eine Option aus: ";
- cin >> auswahl; //Einlesen der Menü-Auswahl
- if( auswahl == 0 ) //Programm beenden wenn 0 gewählt wird
- return 0;
- system("cls"); //Bildschirminhalt löschen
- cout << "Kommazahlen muessen mit einem Punkt statt eines Kommas eingegeben werden!\n\n";
- if ( auswahl >= 1 && auswahl <= 4 )
- {
- cout << "\n1.Zahl: "; //Erste Zahl einlesen
- cin >> a;
- cout << "\n2.Zahl: ";
- cin >> b; //Zweite Zahl einlesen
- }
- else if( auswahl >= 5 && auswahl <= 6 )
- {
- cout << "\nBasis: "; //Basis einlesen
- cin >> a;
- cout << "\nExponent: "; //Exponent einlesen
- cin >> b;
- }
- else if( auswahl == 7 ) //Werte für Prozentrechnung einlesen
- {
- cout << "bla";
- }
- /*if (int auswahl == char auswahl)
- {
- cout << "Falscher Eingabewert!";
- }*/
- ergebnis = calculate(auswahl, a, b);
- cout << "\nDas Ergebnis lautet: " << setprecision(2) << fixed << ergebnis;
- cout << "\n\nWollen sie eine weitere Berechnung durchfuehren?\n";
- cout << "<J/N>"; //Abfrage ob weitergerechnet werden soll oder nicht
- cin >> antwort;
- while( antwort != 'j' && antwort != 'n' )
- {
- cout << "Falsche Eingabe, wiederholen: "; //Fehlerabfang falls Zahl anstatt Buchstabe eingegeben wird
- cin >> antwort;
- }
- system("cls"); //Bildschirminhalt löschen
- }while (antwort == 'j' ); //Bedingung der Do-While-Schleife
- return 0;
- }
- long double calculate (int ausw,long double x,long double y) //Funktion zum berechnen der einzelnen Werte
- {
- long double res = 0.0; //Definition des Ergebnis-Wertes
- switch(ausw) //Switch-Anweisung für Menü-Auswahl
- {
- case 1 : //Berechnung zur Addition
- {
- res = x + y;
- break;
- }
- case 2 : //Berechnung zur Subatraktion
- {
- res = x - y;
- break;
- }
- case 3 : //Berechnung zur Multiplikation
- {
- res = x * y;
- break;
- }
- case 4 : //Berechnung zur Division
- {
- res = x / y;
- if (y == 0) //Fehlerabfang falls durch 0 dividiert wird
- {
- cout << "\nDivision durch 0 nicht moeglich!";
- }
- break;
- }
- case 5 :
- {
- res = pow (x, y); //Berechnung zu Potenzierung
- break;
- }
- case 6 :
- {
- res = pow(x, 1.0 / y); //Berechnung zur Wurzelziehung
- break;
- }
- default : cout<<"Falsche Eingabeparameter!"; //Falsche Auswahl
- break;
- }
- return res;
- }
- long double prozent(int ausw, long double x, long double y) //Muss noch bearbeitet werden (Funktioniert nicht)
- {
- long double res = 0.0;
- switch(ausw)
- {
- case 7 :
- {
- res = x * y / 100;
- cout << "\n" << res;
- break;
- }
- }
- return res;
- }
Wenn ich nun bei der Menüauswahl eine auswahl einlesen will und ein Buchstabe eingelesen wird, statt einer Zahl, läuft das Programm in einer Endlosschleife und spuckt halt immer"Falsche Eingabe, wiederholen" aus.Ich glaube es liegt an der Schleife. Bitte um eine kleine Hilfe.
PS:Nicht erscrehcken bei dem Code da sind noch ein paar "tote" Teile drin die ich noch bearbeiten will.
Schonmal Danke im Vorraus!
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von stack ()