Funktionsaufrufe mit Switch
-
Hey Leute,
ich habe eine Switch-Case Anweisung in der menue.cpp formuliert, die ich über die main aufrufe
In dieser Menü-Auswahl erwarte ich eine Auswahl und lass das ergebnis durch eine switch-anweisung auswerten, die je nach case dann eine funktion laden sollSoweit so gut, jedoch nach abarbeiten der funktion finde ich mich immer wieder in der menue-auswahl - das soll aber nur geschehen, wenn ich es aus der funktion so auch möchte
Source-Code anbei
#include <iostream.h> #include "menue.h" #include <stdlib.h> void menue() { int iAuswahl; do { system("cls"); cout << "****************************************************************************\n"; cout << "*** einfache Menuefuehrung mit switch-Auswahl ***\n"; cout << "****************************************************************************\n"; cout << endl; cout << "[1] - Kontostand abfragen" << endl; cout << "[2] - Geld abheben" << endl; cout << "[3] - Geld einzahlen" << endl; cout << "[4] - Ueberweisung taetigen" << endl; cout << "[5] - Lastschrift einreichen" << endl; cout << "[6] - Dauerauftrag einrichten" << endl; cout << "[7] - Dauerauftrag aendern" << endl; cout << "[8] - Dauerauftrag loeschen" << endl; cout << "[9] - Anweisung abgeben" << endl; cout << "[0] - Programm verlassen" << endl; cout << endl; cout << endl; cout << "Bitte treffen Sie Ihre Auswahl: " ; cin >> iAuswahl; switch(iAuswahl) { case 1: { kontostand(); break; } case 2: { cout << "Wieviel moechten Sie abheben? " << endl; cin >> iAuswahl; break; } case 3: { cout << "Wieviel moechten Sie einzahlen? " << endl; cin >> iAuswahl; break; } case 4: { trennlinie(); break; } case 5: case 6: case 7: case 8: case 9: { cout << "Diese Funktion ist nicht belegt!" << endl; break; } default: { cout << "Bitte gueltigen Wert eingeben!" << endl; cin >> iAuswahl; break; } } }while(iAuswahl!=0); }#include "menue.h" #include <stdlib.h> #include <iostream.h> int kontostand() { char cTaste; system("cls"); cout << "*****************************" << endl; cout << "*** Kontostand ***" << endl; cout << "*****************************" << endl; cout << endl; cout << endl; cout << "Ihr Kontostand betraegt derzeit: _______" << endl; cout << endl; cout << "Zurueck zum Menue: [j] oder [n]" << endl; cin >> cTaste; if (cTaste='j') { menue(); } else return 0; }evtl. könnt ihr mir hierbei helfen (ist nur ein fiktives programm - ich bin wieder-einsteiger und möchte mir einen vokabeltrainer bauen [bewusst mit c++])
-
Der Aufruf von menue in kontostand ist grundsätzlich falsch. Damit baust du eine Rekursion ein.
Wenn du nicht gleich ins Menü zurückwillst, musst du in kontostand eine Schleife einbauen.
-
switch(iAuswahl) { case 1: { iAuswahl = kontostand(); break; ... }int kontostand() { ... if(cTaste='j') return 1; else return 0; }
-
die neue Anweisung funktioniert soweit ganz gut, aber selbst bei einem 'n' verzweigt er zurück zum menue und verbleibt nicht in der funktion kontostand
edit:
also ich habe es mir folgendermaßen gedacht, dass das programm solange in der funktion kontostand verbleiben soll, bis ich es anweise zurück zum menü zu gehenwas genau funktioniert hat, dass er nicht direkt nach dem aufruf des kontostand wieder in die menüschleife gefallen ist, sondern die funktion kontostand dargestellt wurde
ich denke das lag aniAuswahl=kontostand();
-
GMoney597 schrieb:
die neue Anweisung funktioniert soweit ganz gut, aber selbst bei einem 'n' verzweigt er zurück zum menue und verbleibt nicht in der funktion kontostand
Ja, funktioniert ganz gut, außer dass es nicht funktioniert.
-
MFK schrieb:
GMoney597 schrieb:
die neue Anweisung funktioniert soweit ganz gut, aber selbst bei einem 'n' verzweigt er zurück zum menue und verbleibt nicht in der funktion kontostand
Ja, funktioniert ganz gut, außer dass es nicht funktioniert.
"Funktioniert nicht" ist keine ausreichende Fehlerbeschreibung. :p
GMoney597 schrieb:
die neue Anweisung funktioniert soweit ganz gut, aber selbst bei einem 'n' verzweigt er zurück zum menue und verbleibt nicht in der funktion kontostand
Wo sollte es denn bleiben am Ende der Funktion kontostand() ? Hat ja keine Schleife.
-
EOP schrieb:
"Funktioniert nicht" ist keine ausreichende Fehlerbeschreibung. :p
Die Fehlerbeschreibung hat GMoney597 doch schon geliefert. Ich hab's nur zusammengefasst.