Noch eine Frage zu Schleifen



  • Was muß ich machen, damit das Programm auch stehenbleibt?
    Und was ist da generell falsch????

    Danke im vorraus....

    #include <iostream>
    using namespace std;

    int main ()

    { int Code;
    int Eingabe;

    cout << " Bitte geben Sie den Code ein : " ;
    cin >> Code;

    while ( Code = 2333)
    {
    cout << " Herzlich Willkommen ! " ;

    }

    while ( Code < 2333)
    {

    cout << " Der Code ist falsch! Versuchen Sie es noch einmal! ";
    cin >> Eingabe;

    }

    return 0;

    }

    😮



  • while ( Code = 2333)
    

    Ist eine Zuweisung
    Der Variablen Code wird der Wert 2333 zugewiesen. Der Ausdruck ergibt 2333 und das ist <> 0 daher wird diese Schleife nie verlassen.
    Müsste heissen

    while ( Code == 2333)
    

    Was aber in deinem Fall keinen grossen Unterschied macht denn wenn du einmal in der Schleife bist kommst du nicht mehr raus.
    Kurt

    Wahrscheinlich willst du so etwas

    int main () { 
       int Code;
    
       cout << " Bitte geben Sie den Code ein : " ;
       cin >> Code;
    
       if  ( Code == 2333) {
          cout << " Herzlich Willkommen ! " ;
       }
       else {
          while ( Code != 2333) {
             cout << " Der Code ist falsch! Versuchen Sie es noch einmal! ";
             cin >> Code;
          }
          cout << " Herzlich Willkommen ! " ;
       }
       return 0;
    }
    


  • 1. Katastrophale Einrückung
    2. In Zukunft, wenn du Code postest, bitte [ cpp ][ /cpp ]-Tags verwenden
    3. while != if; while ist eine Schleife du willst doch nichts in einer Schleife ausgeben 😕
    4. Code = 2333 ist eine Zuweisung, sollte wohl eher Code == 2333 heißen
    5. Das zweite while sollte eine Schelilfe sein, aber das gehört wohl um den gesamten Block.

    Hier ein Versuch:

    #include <iostream>
    using namespace std;
    
    int main ()
    {
        int code = 0;
    
        while(code != 2333)
        {
            cout << "Bitte geben Sie den Code ein: ";
            cin >> code;
    
            if(code != 2333)
                cout << "Der Code ist falsch. Versuchen Sie es noch einmal!" << endl;
        }
    
        cout << "Herzlich Willkommen!" << endl;
        return 0;
    }
    

    MfG SideWinder



  • Visual Newbie schrieb:

    cout << " Der Code ist falsch! Versuchen Sie es noch einmal! ";
    cin >> Eingabe;

    Warum schreibst du die Eingabe in 'Eingabe'? Da passiert doch gar nichts? Muss in 'Code'



  • #include <iostream>
    using namespace std;
    
    int main()
    {
        //Code soll immer 2333 bleiben.
        //const sagt dem Compiler, dass er schimpfen und die Arbeit verweigern soll, wenn man versucht Code später etwas anderes zuzuweisen
        const int Code = 2333;
    
        int Eingabe;
    
        cout << "Herzlich Willkommen! " << endl;
        cout << "Bitte geben Sie den Code ein : " ;
        cin >> Eingabe;
    
        if( Code == Eingabe ) //Der Gleichheitsoperator lautet ==
            cout << "Super, sie haben den Code gleich beim ersten Mal richtig eingegeben!" << endl;
        else while ( Code != Eingabe) //Der Gleichheitsoperator lautet !=
        {
             cout << "Der Code ist falsch! Versuchen Sie es noch einmal! " << endl;
             cout << "Bitte geben Sie den Code ein : " ;
             cin >> Eingabe;
        }
    
        //Im Eingabebuffer ist noch ein Linefeed '\n', das wird jetzt ignoriert und ist dann weg
        cin.ignore();
    
        cout << "Fertig" << endl;
        cin.get();
    }
    


  • Oops, da hat sich der Copy & Paste - Fehlerteufel eingeschlichen! Es muss natürlich heißen:

    //Der Ungleichheitsoperator lautet !=
    

Anmelden zum Antworten