switch case verzweigung geht nicht



  • meine bedingung mit switch und case für ein menü geht nicht

    // C++ für Spieleprogrammierer
    // Listing 1.1
    // Es wird ein Begrüßungstext ausgegeben
    //
    #include <iostream>
    
    using namespace std;
    
    // Hauptprogramm
    //
    
    int main ()
    {
    	char auswahl;
    
        cout << "1-Speilfeld anzeigen\n";
        cout << "2-Feld besetzen\n";
        cout << "3-Fleddaten anzeigen\n";
        cout << "4-Spielfeld loeschen\n";
        cout << "5-Programm beenden\n";
    	cin >> auswahl;
    
     do
     {
    
    	switch (auswahl)
    	{
    
    	case ('1'):
    	{
    		cout << "Hier wird etwas entstehen: S.A." << endl;
    	} break;
    
    	case ('2'):
    	{
    		cout << "Hier wird etwas enstehen: F.B." << endl;
    	} break;
    
    	case ('3'):
    	{
    		cout << "Hier wird etwas enstehen: F.A." << endl;
    	} break;
    
    	case ('4'):
    	{
    		cout << "Hier wird etwas enstehen: S.L." << endl;
    	} break;
    
    	case ('5'):
    	{
            cout << "Hier wird etwas enstehen: P.B." << endl;
    	} break;
    
    	}
    
     } while (auswahl != 5);
    
    return 0;
    
    }
    

    danke für alle antworten 😋

    EDIT: Codetags ergänzt (Martin)



  • Schon mal was von Codetags gehört. Das kann man ja so kaum lesen.
    Und geht nicht ist leider keine Fehlerbeschreibung.

    Was geht denn nicht?



  • Hallo Golol,

    dein switch-case-Konstrukt sollte funktionieren. Allerdings verlangst du vom User eine einmalige Eingabe und gehst erst danach in die Schleife. Ich gehe davon aus, dass das so nicht gewollt ist.

    Verschiebe doch deine Menü-Ausgabe und das Auslesen der Nutzereingabe in die Schleife.

    do
    {
      cout << "1-Speilfeld anzeigen\n";
      cout << "2-Feld besetzen\n";
      cout << "3-Fleddaten anzeigen\n";
      cout << "4-Spielfeld loeschen\n";
      cout << "5-Programm beenden\n";
      cin >> auswahl;
    
      switch (auswahl)
      {
        //...
      }
    } while (auswahl != 5);
    

    Ein weiterer Fehler besteht unabhängig von deinem switch-case. Die Abbruchbedingung der do-while-Schleife ist fehlerhaft, da du dern Wert der char-Variable mit einem int-Wert vergleichst. Die Bedingung wird nie erfüllt sein. D.h. dein User kann das Programm nicht beenden.

    Damit könntest du den Fehler beheben:

    while (auswahl != '5');
    

    Viele Grüße,
    MaBa



  • supii danke 👍 👍 👍


Anmelden zum Antworten