Buchstabeneingabe Verbieten
-
ich habe heute mal ein neues Programm geschrieben dass eigentlichvon grund auf beser funktioniert und aussieht, der fehler mit den buchstaben ist hier auch nicht mehr vorhanden...
edit: ich weis der code is ziemlich lang aber es funktioniert super!
#include <iostream> using namespace std; int main() { char eingabe; do { cout << "Hauptmenu\n Was fuer eine Rachnung wollen sie durchführen? " << endl; cout << " + <1> " << endl; cout << " - <2> " << endl; cout << " * <3> " << endl; cout << " / <4> " << endl; cout << " Beenden <5> " << endl; cout << endl; cout << " Ihre Eingabe: "; cin >> eingabe; cout << endl; switch (eingabe) { case '1': double zahl1, zahl2, ergebnis; cout << endl; cout << "geben sie die erste Zahl ein:\n "; cin >> zahl1; cout << "geben sie die zweite zahl ein:\n "; cin >> zahl2; ergebnis = zahl1 + zahl2 ; cout << endl; cout << " " << zahl1 << " + " << zahl2; cout << " = " << ergebnis << endl; cout << endl; break; case '2': double zahl3, zahl4, ergebnis2; cout << endl; cout << "geben sie die erste Zahl ein:\n "; cin >> zahl3; cout << "geben sie die zweite zahl ein:\n "; cin >> zahl4; ergebnis2 = zahl3 - zahl4 ; cout << endl; cout << " " << zahl3 << " - " << zahl4; cout << " = " << ergebnis2 << endl; cout << endl; break; case '3': double zahl5, zahl6, ergebnis3; cout << endl; cout << "geben sie die erste Zahl ein:\n "; cin >> zahl5; cout << "geben sie die zweite zahl ein:\n "; cin >> zahl6; ergebnis3 = zahl5 * zahl6 ; cout << endl; cout << " " << zahl5 << " * " << zahl6; cout << " = " << ergebnis3 << endl; cout << endl; break; case '4': double zahl7, zahl8, ergebnis4; cout << endl; cout << "geben sie die erste Zahl ein:\n "; cin >> zahl7; cout << "geben sie die zweite zahl ein:\n "; cin >> zahl8; ergebnis4 = zahl7 / zahl8 ; cout << endl; cout << " " << zahl7 << " / " << zahl8; cout << " = " << ergebnis4 << endl; cout << endl; break; case '5': cout << " Programm wird beendet " << endl; break; default: cout << " Ungueltige Eingabe! " << endl; } cout << endl; } while ( eingabe != '5'); return 0; }
-
Alle Zeilen die mehrfach vorkommen, kannst du vor oder nach dem switch schreiben.
Überleg mal, ob du wirklich 8 Zahlen und 4 Ergebnisse brauchst.Da bei dir eingabe ein
char
ist, bist du nicht auf Ziffern beschränkt. '+', '-', '*' und '/' geteilt gehen da auch.
-
DirkB schrieb:
Da bei dir eingabe ein
char
ist, bist du nicht auf Ziffern beschränkt. '+', '-', '*' und '/' geteilt gehen da auch.ja aber dann sagt der ja dass die eingabe ungültig ist, ist also kein problem, wenn du mir nen tipp geben könntest wie ich zahl1 , zahl2 und ergebnis in jedem case verwenden kann wäre das gut, wenn ich die nämlich für jeden einfach eingebe spuckt der compiler mir ne fehlermeldung aus: Fehler 1 error C2086: 'double zahl1': Neudefinition
-
nicopro98 schrieb:
Da aber dann sagt der ja dass die eingabe ungültig ist, ist also kein problem,
Du musst natürlich einen case dafür anlegen.
Man kann auch einen Block für mehrere case nehmen.
https://de.wikibooks.org/wiki/C-Programmierung:_Kontrollstrukturen#switchswitch (eingabe) { case '+': // da hier kein break steht, wird der nachfolgende Code ausgeführt. case '1': ergebnis = zahl1 + zahl2 ; break; ,,,
nicopro98 schrieb:
wenn du mir nen tipp geben könntest wie ich zahl1 , zahl2 und ergebnis in jedem case verwenden kann wäre das gut, wenn ich die nämlich für jeden einfach eingebe spuckt der compiler mir ne fehlermeldung aus: Fehler 1 error C2086: 'double zahl1': Neudefinition
Du musst die Variablen eben einmal davor definieren.
-
#include <iostream> #include <cmath> using namespace std; int main() { char eingabe; do { cout << "Hauptmenu\n Was fuer eine Rechnung wollen sie durchfuehren? " << endl; // Eingabemöglichkeiten cout << "Funktionen: | Ihre eingabe: \n"; cout << "_____________________________\n_____________________________\n" << endl; cout << " + <1> " << endl; cout << "_____________________________\n" << endl; cout << " - <2> " << endl; cout << "_____________________________\n" << endl; cout << " * <3> " << endl; cout << "_____________________________\n" << endl; cout << " / <4> " << endl; cout << "_____________________________\n_____________________________" << endl; cout << "Verlassen <5> " << endl; cout << endl; cout << " Ihre Eingabe: "; cin >> eingabe; cout << endl; while ( eingabe != '5'); { return 0; } double zahl1, zahl2, ergebnis; cout << endl; cout << "geben sie die erste Zahl ein:\n "; cin >> zahl1; cout << "geben sie die zweite zahl ein:\n "; cin >> zahl2; ergebnis = zahl1 + zahl2 ; // Auswertung der Eingabe switch (eingabe) { // Addition case '1': ergebnis = zahl1 + zahl2 ; cout << endl; cout << " " << zahl1 << " + " << zahl2; cout << " = " << ergebnis << endl; cout << endl; break; // Subtraktion case '2': ergebnis = zahl1 - zahl2 ; cout << endl; cout << " " << zahl1 << " - " << zahl2; cout << " = " << ergebnis << endl; cout << endl; break; // Multiplikation case '3': ergebnis = zahl1 * zahl2 ; cout << endl; cout << " " << zahl1 << " * " << zahl2; cout << " = " << ergebnis << endl; cout << endl; break; // Division case '4': ergebnis = zahl1 / zahl2 ; cout << endl; cout << " " << zahl1 << " / " << zahl2; cout << " = " << ergebnis << endl; cout << endl; break; case '5': cout << " Programm wird beendet " << endl; break; default: cout << " Ungueltige Eingabe! " << endl; } cout << endl; }
da is iwo ein fehler drin
-
Deine while-Schleife ist sehr, sehr merkwürdig.
Eine Endlosschleife für Werte != '5'.
Wenn die nicht läuft, kommt dasreturn
und das Programm wird verlassen.Du suchst eine
do-while
-Schleife.
Oder dasreturn
im case '5'Edit: Durch den Block nach dem
while
und die Einrückung habe ich dasdo
übersehen.
-
jetzt kommt nurnoch diese meldung: Fehler 1 fatal error C1075: Dateiende erreicht, bevor das zugehörige Element für das linke Element Klammer "{" gefunden wurde
-
nicopro98 schrieb:
jetzt kommt nurnoch diese meldung: Fehler 1 fatal error C1075: Dateiende erreicht, bevor das zugehörige Element für das linke Element Klammer "{" gefunden wurde
wo kommt denn die letzte klammer hin?
-
nicopro98 schrieb:
wo kommt denn die letzte klammer hin?
Das musst du doch wissen.
Wenn du für das Menü eine
do-while
-Schleife möchtest, solltest du dir da mal die Klammerung ansehen.
Oder daswhile
gehört in Zeile 108Das
return
in Zeile 36 mit den Klammern drum herum ist sinnfrei.
-
ok jetzt gehts wieder danke