Mit C++ Hauptmenü und Untermenü programmieren. Allerdings funktioniert es noch nicht so ganz?
Hallo,
ich hab nach der YouTube Anleitung das Menü programmiert.
https://www.youtube.com/watch?v=H9sQg3s46yw
Jetzt wolllte ich versuchen noch ein Untermenü zu programmieren, so wie das Hauptmenü, aber es funktioniert nicht so wie ich es möchte. Er lässt keine Switch Case in einer Switch Case zu auch wenn ich es in einer extra Unterfunktion schreibe.
Gibt es eine andere Möglichkeit wie ich mein Problem lösen könnte?
2 Antworten
Zeige doch bitte einmal deinen Quellcode, damit man nachvollziehen kann, was du genau falsch machst. Du kannst ihn z.B. hier posten und dann die URL teilen.
Ich konnte mittlerweile ein paar Fehler die ich gemacht habe selbst beheben, aber leider noch nicht alle Fehler, zumindest meckert mein Programm immer noch rum.
Bei dir fehlen öfter Klammern.
- Die schließende Klammer für do in deinen beiden Funktionen.
- Die Argumentenliste für die ignore-Funktion in deinen beiden Funktionen.
cin.ignore();
- Die schließende Klammer für switch in deiner main-Funktion.
Des Weiteren würde ich dir empfehlen:
- Die Eingabe (in NeuesSpiel) in Kleinbuchstaben umzuwandeln. Dafür kannst du tolower verwenden. Mehrere Cases kannst du dir folgend sparen.
- Rücke deinen Code richtig ein und halte dich an Konventionen (Variablen- und Funktionsnamen beginnen mit einem Kleinbuchstaben), um deinen Code gut lesbar zu gestalten.
- Vergib passende Namen. NeuesSpiel leitet in die Irre, wenn die Variable doch die Eingabe beinhaltet.
- Deine Schleife wird bei der Eingabe von b/B beendet. Den Case kannst du dir daher sparen, die Anweisungen in ihm können auch hinter die Schleife:
do {
// ...
}
while (Auswahl != 'B' && Auswahl != 'b');
cout << endl;
cout << "Spiel wird beendet\n" << endl;
// ...
- Des Weiteren fällt auf, dass du bei jedem Case gleiche Funktionen aufrufst. Die könnten doch hinter switch-case.
cout << endl;
switch (neuesSpiel) {
case('k'):
cout << "Karteikarten werden geladen\n" << endl;
break;
case('p'):
cout << "Profile werden geladen\n" << endl;
break;
case('z'):
cout << "zurück\n" << endl;
break;
default:
cout << "Keine korrekte Eingabe\n" << endl;
break;
}
system("pause");
system("cls");
- Den Begriff Unterfunktion gibt es eigentlich gar nicht. Woher hast du den? Funktionen sind Funktionen. Wenn du sie aufrufst, dann setze auch die Argumentenliste dahinter.
NSpiel();
So ist ersichtlich, dass es sich um eine Funktion handelt, die du da gerade aufrufen möchtest.
Danke, die schließenden Klammern habe ich total übersehen. Den Vorschlag mit dem tolower find ich interessant und werde es mir mal genauer anschauen.
Da ich Hobbyprogrammierer bin, kenn ich manche Konventionen nicht und werde die erst lernen müssen.
Konstrukte zu "if-else" waren schon immer die Lösung... :)
Dachte ich auch, aber es funzt nicht so wie ich es gern hätte.
Man muss sich immer erst genau überlegen, wie man es gerne hätte und sich darüber im Klaren sein, warum es auch das (einzig) richtige ist! Eine Überlegung die stets lohnt.
Ich benutze das Programm Microsoft Visual Studio:
Ich will zwei "Schalter verwenden" allerdings sagt mir das Programm in der Unterfunktion, das ich "case" nur für einen Schalter verwenden darf. Ich da als Hobbyprogrammierer leider etwas überfragt.