Mit C++ Hauptmenü und Untermenü programmieren. Allerdings funktioniert es noch nicht so ganz?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

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.


ElamoMichi 
Fragesteller
 23.02.2019, 19:01

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.

0
regex9  23.02.2019, 20:28
@ElamoMichi

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.

1
ElamoMichi 
Fragesteller
 24.02.2019, 20:38
@regex9

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.

0

Konstrukte zu "if-else" waren schon immer die Lösung... :)

Woher ich das weiß:Studium / Ausbildung

ElamoMichi 
Fragesteller
 21.02.2019, 20:42

Dachte ich auch, aber es funzt nicht so wie ich es gern hätte.

0
wooghie78  02.03.2019, 23:35
@ElamoMichi

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.

0