Wie kann ich eine Schleife durch ein switch-case-Anweisung, fragt nach Eingang wieder in c++?
Ich zuerst die Anzeige ein Menü für den Benutzer, in denen Sie eine Entscheidung treffen kann.
Sobald Sie eine Wahl machen, etwas code ausgeführt, und ich möchte Ihnen zeigen das gleiche Menü wieder, so dass Sie können eine andere Wahl treffen.
Dies ist mein code bisher:
//call the menu function and put it in a variable which will be used in the switch case statements
menu_selection = main_menu();
condition_main = true;
while (condition_main) {
switch (menu_selection) {
case 1: display(primes);
menu_selection = main_menu();
case 2: display(fibos);
menu_selection = main_menu();
case 3: display(primes_and_fibos);
menu_selection = main_menu();
case 4: display(primes_not_fibos);
menu_selection = main_menu();
case 5: display(fibos_not_primes);
menu_selection = main_menu();
case 6: search();
menu_selection = main_menu();
case 7: condition_main = false;
return 0; //this exits the program
default: cout << "\nThat is an invalid option. Please try again.\n\n";
}
}
Wenn ich das Programm jedoch, was zu geschehen scheint, ist, dass wenn ich die option 1, es würde den code und das Menü wird wieder angezeigt aber wenn ich die option 1, es wieder laufen würde der code, entworfen für Sie option 2. Ich habe auch versucht eine do-while-Schleife und nicht mit einer Schleife und nichts scheint zu funktionieren. Jede Hilfe ist willkommen, danke.
Sie fehlt
break
Aussagen.InformationsquelleAutor John | 2013-03-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Jeden Fall eine Pause braucht, es sei denn, Sie wünschen, eine Bedingung, fallen durch das nächste:
diese Referenz hat mehr
switch
Beispiele und deckt auch den Fall durch Fall sowie.Wie Steve es vorgeschlagen hat auch wohl mehr Sinn macht, haben die
return
nach derwhile
- Anweisung. Dies wäre die erwartete Ablaufsteuerung und wahrscheinlich leichter zu pflegen, wie gut. Verschieben dermain_menu
Ruf aus-Schalter in die loop wird auch Ihr code leichter zu ändern später.Ja, wenn Sie ersetzen die
return 0
mitbreak
dann wenn es geht wieder zurück an die Spitze derwhile
Schleifecondition_main
wirdfalse
und die Schleife wird verlassen.InformationsquelleAutor Shafik Yaghmour
Ich bin damit einverstanden, die Pause fehlt. Möchten Sie vielleicht zu prüfen, eine code-Struktur, die mehr wie dieser: (meine Formatierung ist nicht so toll, denn ich wollte für compact)
(formatiert, wie Sie es vorziehen, natürlich.) Dies hat nur einen einzigen Aufruf der Menü-Funktion, wodurch die Wartung wesentlich einfacher. Die
return
ist auch am Ende der Funktion, wo die meisten Menschen erwarten, um es zu finden.InformationsquelleAutor Steve Valliere
Hinzufügen
break
s 'lösen' das problem.Allerdings wäre es besser, sich zu trennen, sich den code, um es einfacher zu testen. Sie könnten erkannt haben, das problem selbst dann.
Trennen Sie Ihre Eingabe und Ihre Handhabung-code:
Sollte man wohl trennen Sie die Ausgabe-code auch ("Das ist eine ungültige option. Bitte versuchen Sie es erneut"), aber ich denke ich habe meinen Standpunkt ohne zu tun.
InformationsquelleAutor Peter Wood
InformationsquelleAutor Pankaj