Vererbung / Befehl in Schleife packen -einfache Frage



  • Hallo,

    versuche gerade eine einfache Cout Cin Schleife mit einer Vererbung zu basteln...Wenn ich die Funktion ohne Schleife ausführe funktioniert alles ganz normal, packe ich das ganze jedoch in eine While Schleife erfolgt keine Ausgabe mehr. Hoffe das ist vertsändlich genug geschildert...fällt mir schwer das ganze auszudrücken.
    hier mal eon Ausschnitt ais der main.cpp

    int main()
    {
    char Auswahl;
    Spiel* pabstraktesSpiel;
    
        cout << "Tamagotchi_V01!" << endl;
        cout <<"Beispiel zur Vererbung\n";
        cout <<"Willkommen, waehle deinen Tamagotchi \n A) Tamagotchi\n B) Gudetama\n\n";
        cin >> Auswahl;
        cout << endl;
        while (Auswahl != '1' || '2')
        {
    
    
        if ( Auswahl == '1')
        {
       cout << "hää"; ----> diese Ausgabe erfolgt
       pabstraktesSpiel = new Tamagotchi();  ---> die eigentliche Ausgabe, welche ohne Schleife funktioniert klappt nicht.
        }
        else
        {
            if (Auswahl == '2')
            {
      pabstraktesSpiel = new Gudetama(); 
            }
        else
        {
            cout << "Bitte waehlen Sie zwischen Option A und B" <<endl;
                    pabstraktesSpiel = new Spiel();
        }
        }
    

  • Mod

    @ProgPPM sagte in Vererbung / Befehl in Schleife packen -einfache Frage:

    Auswahl != '1' || '2'

    Das heißt nicht "Auswahl ungleich '1' oder ungleich '2'", sondern "Auswahl ungleich ('1' oder '2')".



  • Schreibe in eine Zeile vor Deinen Code bitte ``` und in eine Zeile nach deinem Code ```. Alternativ kannst Du den Code auch markieren und auf das </> in der Symbolleiste über dem Bearbeitungsfenster klicken. Du kannst Deinen Beitrag auch nachträglich noch bearbeiten. Den Menüpunkt "Bearbeiten" findest Du in dem Drei-Punkte-Menü rechts unter Deinem Beitrag. Danke.

    @ProgPPM sagte in Vererbung / Befehl in Schleife packen -einfache Frage:

    pabstraktesSpiel = new Spiel();
    

    Warum?



  • Das eine Standardantwort erzeugt wird, aber kann ich mir eigentlich auch sparen. Aber wieso klappt das ganze ohne die while Schleife aber mit while schleife nicht mehr. Das häää das ich reingeschrieben hab wird auch ausgegeben aber nicht das was es eigetlich ausgeben soll.... mir fällt es etwas schwer mich in Programmieren richtig auszudrücken.



  • @SeppJ
    Steh auf dem Schlauch.
    Wäre (Auswahl != '1' , '2') richtig?
    Danke schon mal für die Rückmeldung!:)



  • #include <iostream>
    #include "Spiel.h" // Header Datei aufnehmen#
    #include "Tamagotchi.h"
    #include "Gudetama.h"
    #include "string"

    using namespace std;

    int main()
    {
    char Auswahl;
    Spiel* pabstraktesSpiel;
    
        cout << "Tamagotchi_V01!";
        cout <<"Willkommen, waehle deinen Tamagotchi \n A) Tamagotchi\n B) Gudetama\n\n";
        cin >> Auswahl;
     
        if ( Auswahl == '1')
        {
       pabstraktesSpiel = new Tamagotchi();  --> Ausgabe: Tmagotchiiiii (klappt auch so)
        }
        else
        {
            if (Auswahl == '2')
            {
      pabstraktesSpiel = new Gudetama(); --> Ausgabe Gudetamaaaaa (klappt auch so) 
            }
        else
        {
            cout << "Bitte waehlen Sie zwischen Option A und B" <<endl; ----> Wie schaffe ich es hier das ganze wieder in die Auswahl zwischen Tamagotchi und Gudetama zurückspringen zu lassen? 
                                                                                                         
    
        }
        }
    
    
        cout << "Laut des Tieres:  " << pabstraktesSpiel->spielen() << "\n" ;
    
        cout<< "Name:    ";
        string Name;
        cin>> Name;
        cout <<"(Hinweis: Stufe 1 ist immer 'gut'). \n" ;
        return 0;
    }
    


  • @ProgPPM sagte in Vererbung / Befehl in Schleife packen -einfache Frage:

    Wäre (Auswahl != '1' , '2') richtig?

    Möglichkeiten, die richtig sein könnten:
    (Auswahl != '1' || Auswahl != '2') -- das ist syntaktisch richtig und vermutlich am nächsten der Bedeutung davon, was du meintest, ist aber Unfug, weil Auswahl nicht gleichzeitig '1' und '2' sein kann und deshalb eine der Teilbedingungen -- und damit die ganze Bedingung -- auf jeden Fall wahr ist.

    Vielleicht (Auswahl != '1'&& Auswahl != '2')? Das würde im richtigen Kontext Sinn ergeben, z.B. in einer Schleife um die Eingabe herum. Ist bei dir aber nicht so. Dein Programm ergibt so oder so keinen Sinn.

    Vielleicht lernst du einfach mal die Operatoren bevor du irgendwas einfach so hinschreibst, dann kannst du ganz einfach selbst bestimmen was du brauchst.


Anmelden zum Antworten