Problem: Ineinander verschaltete schleifen



  • Und wieder eine Anfängerfrage...

    Ich wollte ein Beispielprogramm aus einem Buch so modifizieren, dass er zwei beenden- bzw. fortsetzenoptionen anbietet. Ich baue aber leider nur Mist.
    Hier ein Versuch.

    #include <cstdlib>
    #include <iostream>
    #include <ctime>
    
    using namespace std;
    
    int main()
    {
        //randomizer
        srand(time(0));
        int dieZahl = rand() %100 +1; 
        //randomizer END
    
        int versuche = 0, guess;
        char wahl = 'j';
    
        cout << "Tja, tipp ne Zahl ein, die der Rechner vorbestimmt hat." << endl;
        cout << "Oder, wenn du das nicht spielen willst, tipp einfach 'n' ein." << endl;
        cout << "Wenn doch, tipp 'j' ein.\n" << endl;
        cin >> wahl;
    
        while (wahl == 'j');
        {
    
            do
            {
             cin >> guess;
             ++versuche;
    
             if (guess > dieZahl)
             cout << "\nZu hoch, versuchs nomma.\n" << endl;
    
             if (guess < dieZahl)
             cout << "\nZu niedrig, versuchs nomma.\n" << endl;  
    
            }
             while (guess != dieZahl);
             cout << "\nRichtig! du hast es in " << versuche << " Versuchen geschafft.\n" << endl;         
             cout << "Willst du wieder spielen? j/n" << endl;
    
        }
    
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    

    Danke im Vorraus.



  • 1. Was ist das Problem?
    2. Ist es nicht sinnlos immer wieder dieselbe Zahl raten zu lassen?



  • Alles in Ordnung, ich habs geschafft.

    Hier nochmal das Endergebniss:

    #include <cstdlib>
    #include <iostream>
    #include <ctime>
    
    using namespace std;
    
    int main()
    {
        //randomizer
        srand(time(0));
        int dieZahl = rand() %100 +1; 
        //randomizer END
    
        int versuche = 0, guess;
        char wahl = 'j';
        char wahl1 = 'j';
    
        cout << "Tja, tipp ne Zahl ein, die der Rechner vorbestimmt hat." << endl;
        cout << "Oder, wenn du das nicht spielen willst, tipp einfach 'n' ein." << endl;
        cout << "Wenn doch, tipp 'j' ein.\n" << endl;
        cin >> wahl;
    
        if (wahl == 'j')
           {
           do //äussere Schleife Anfang
           {
            do  //innere Schleife IO
            {
             cout << "OK, dann rate mal." << endl;
             cin >> guess;
             ++versuche;
    
             if (guess > dieZahl)
             cout << "\nZu hoch, versuchs nomma.\n" << endl;
    
             if (guess < dieZahl)
             cout << "\nZu niedrig, versuchs nomma.\n" << endl;  
    
            }
             while (guess != dieZahl);  //innere Schleife END
             cout << "\nRichtig! du hast es in " << versuche << " Versuchen geschafft.\n" << endl;         
             cout << "Willst du wieder spielen? j/n" << endl; 
             cin >> wahl1;
            }
             while (wahl1 != 'n'); //äussere Schleife ENDE
    
         }
        else 
    
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    

Anmelden zum Antworten