Einen Menü Punkt zurück gehen in C



  • Hallo,
    meine Frage ist wie komme ich einen menü punkt zurück in einer switch case anweisung?

    Mit freundlichen Grüßen
    sebl11

    Und ich wünsch allen ein gesundes Neues Jahr 🙂



  • Ganz einfach, ein Schleifchen um das Ganze 👍 :xmas2:

    Wenn du schon bei switch - case - break - default bist, denke ich da hattet ihr schon vorher etwas zu Schleifen in den Unterlagen.

    MfG f.-th.


  • Mod

    Du kannst alle Arten von Kontrollstrukturen schachteln:

    #include <stdio.h>
    
    int main()
    {
      char wahl1=0;
      do
        {
          puts("Hauptmenü\n1: Untermenü 1\n2: Untermenü 2\n3: Ende\n");
          scanf(" %c", &wahl1);
          switch (wahl1)
            {
            case '1':
              {
                char wahl2=0;
                do
                  {
                    puts("Untermenü 1\n1: Foo!\n2: Bar!\n3: Zurück\n");
                    scanf(" %c", &wahl2);
                    switch (wahl2)
                      {
                      case '1':
                        puts("Foo!\n");
                        break;
                      case '2':
                        puts("Bar!\n");
                        break;
                     case '3':
                        puts("Zurück!\n");
                        break;
                      default:
                        puts("1, 2, oder 3!\n");
                     }
                  }
                while (wahl2 != '3');
                break;
              }
            case '2':
              {
                char wahl2=0;
                do
                  {
                    puts("Untermenü 2\n1: Foo2!\n2: Bar2!\n3: Zurück\n");
                    scanf(" %c", &wahl2);
                    switch (wahl2)
                      {
                      case '1':
                        puts("Foo2!\n");
                        break;
                      case '2':
                        puts("Bar2!\n");
                        break;
                     case '3':
                        puts("Zurück!\n");
                        break;
                      default:
                        puts("1, 2, oder 3!\n");
                     }
                  }
                while (wahl2 != '3');
                break;
              }
            case '3':
              puts("Ende!\n");
              break;
            default:
              puts("1, 2, oder 3!\n");
            }
        }
      while (wahl1 != '3');
      return 0;
    }
    


  • danke SeppJ es funktioniert 🙂 👍



  • Hätte hierzu auch eine Frage - wie komme ich komplett aus dem Menü raus, falls ich nicht zurück will?

    Also ich wähle im Hauptmenü den 1. Punkt aus und dann im Untermenü den 2., hier setze ich dann die auswahl = 2 und returne die mit dieser Menüfunktion, damit ich dann weiter im Code gehen kann!

    Bei mir ist es momentan noch so, wenn ich einen anderen Unterpunkt als zurück auswähle, steckt er in der schleife fest und zeigt immer wieder das Menü an!

    Stehe irgendwie auf dem Schlauch.

    Grüße,
    Wuzi



  • Ich würde mal sagen, dass du puts durch deinen Code ersezten must.

    while (wahl2 != '3');
    

    Das bedeutet ja, dass die Schleife erst verlassen wird, wenn wahl2 == '3' ist.
    Entweder du benutzt Flags oder du lagerst dein Menu in eine Funktion aus. Dann kannst du nur return(auswahl) verwenden.
    Gruss



  • Erstmal vielen Dank für die Antwort!

    Das mit der Schleife und der Abbruchbedingung habe ich verstanden, würde aber ungern den Code in das Menü einfügen, sondern nur die auswahl auf den ausgewählten Menüpunkt setzen und diesen Wert dann returnen um damit dann in der main Funktion weiter arbeiten zu können!

    Gruß



  • Falls Du unter/für Windows programmierst, findest Du hier eine fertige Menüklasse:
    http://www.c-plusplus.net/forum/303169

    Edit:
    Sorry, ich hatte übersehen, dass hier das C und nicht das C++ - Forum ist ...


Anmelden zum Antworten