OOP - Polymorphismus - Fehler im Aufbau/Aufruf meiner Klassen?


  • Mod

    Deine while-Abbruchbedingung ist, dass eine deine Variablen einen bestimmten Wert hat. Wenn du nun nach einem Abbruch zu der while-Schleife zurück kehrst, welchen Wert hat diese Variable dann wohl?



  • SeppJ schrieb:

    Deine while-Abbruchbedingung ist, dass eine deine Variablen einen bestimmten Wert hat. Wenn du nun nach einem Abbruch zu der while-Schleife zurück kehrst, welchen Wert hat diese Variable dann wohl?

    Ich verstehe nicht ganz worauf du hinaus möchtest...das Problem ist ja das er das zweite mal nicht in die Switch anweisung geht, obwohl der Wert stimmt.

    int main()
    {
        int Hauptmenu_Eingabe = 1;
        int AlleMedienMenu_Eingabe = 1;
    
        while (Hauptmenu_Eingabe != 0){
            cout << "Hauptmenu_Eingabe: ";
            cin >> Hauptmenu_Eingabe;
    
            cout << Hauptmenu_Eingabe;
    
            switch (Hauptmenu_Eingabe) {
                case 1:
                    while (AlleMedienMenu_Eingabe != 0){
                        cout << "AlleMedienMenu_Eingabe: ";
                        cin >> AlleMedienMenu_Eingabe;
    
                        switch (AlleMedienMenu_Eingabe) {
                            case 1:
                                break;
                            case 0:
                                break;
    
                        }
                    }
                    break;
                case 0:
                    break;
            }
            cout << Hauptmenu_Eingabe;
        }
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    

    Output bei folgender Eingabe: 1
    0
    1
    1
    1
    1
    0

    Hauptmenu_Eingabe: 1
    1AlleMedienMenu_Eingabe: 0
    1Hauptmenu_Eingabe: 1
    11Hauptmenu_Eingabe: 1
    11Hauptmenu_Eingabe: 1
    11Hauptmenu_Eingabe: 1
    11Hauptmenu_Eingabe: 0
    00
    

  • Mod

    Yaerox schrieb:

    SeppJ schrieb:

    Deine while-Abbruchbedingung ist, dass eine deine Variablen einen bestimmten Wert hat. Wenn du nun nach einem Abbruch zu der while-Schleife zurück kehrst, welchen Wert hat diese Variable dann wohl?

    Ich verstehe nicht ganz worauf du hinaus möchtest...das Problem ist ja das er das zweite mal nicht in die innere Switch anweisung geht, obwohl der Wert stimmt.

    Und ich fordere dich auf, mal nachzudenken, welchen Wert deine Abbruchvariable wohl beim zweiten Mal hat. Siehst du jetzt, worauf ich hinaus möchte?

    Diese Probleme kommen daher, das du das Grundproblem "Aufbau eines Menüs" nicht sauber gelöst hast. Das sieht man daran, dass dein Menü und dein Untermenü jeweils anders programmiert sind, obwohl sie funktional gleich sein sollen. Ich sehe ein, dass es für dich wahrscheinlich noch viel zu schwer ist, eine allgemeine Menüklasse zu entwerfen, aber in diesem Notfall können wir ausnahmsweise auch mal zu Copy&Paste Programmierung greifen:
    Wenn du ein funktionierendes, in sich geschlossenes Basismenü hast, zum Beispiel dein Haupmenü, dann kannst du diesen Code wieder benutzen, um deine Untermenüs zu erzeugen. Du brauchst bloß deine Texte und Auswahlpunkte anzupassen. Das ist bei deinem Code derzeit nicht der Fall, denn dein AlleMedienMenu hat vom Aufbau her ein paar entscheidende Unterschiede zu deinem funktionierenden Hauptmenü. Nimm daher mal dein Hauptmenü:

    int Hauptmenu_Eingabe = 1;
    
        while (Hauptmenu_Eingabe != 0){
            cout << "Hauptmenu_Eingabe: ";
            cin >> Hauptmenu_Eingabe;
    
            switch (Hauptmenu_Eingabe) {
                case 1:
                    break;
                case 0:
                    break;
            }
        }
    

    Jetzt fügst du an der Stelle wo das AlleMedienMenu erscheinen soll deinen Hauptmenücode ein. Denk dran, einen eigenen Scope um diesen Code zu setzen (d.h. du sollte geschweifte Klammern drum machen)! Dann änderst du noch alles, was im AlleMedienMenu anders sein soll, lässt die grundlegende Logik aber intakt.

    Dann sollte es funktionieren.



  • Ohh man, ja es war offensichtlich 😕

    Die Variable die ich im zweiten Switch nutze müsste ich einfach auch nur mal wieder auf != 0 setzen 😕

    Nun funktionieren beide...

    Danke


Anmelden zum Antworten