Frage zu if und while Schleifen



  • Guten Morgen beisammen,
    Folgendes Problem: Ich muss ein Programm schreiben, welches eine Zahl errät, die sich der Benutzer ausdenkt. Durch ja/nein Fragen soll irgendwann die richtige Zahl erraten werden.
    Ich zeige nur einen Teil des Codes. Das Programm will einfach nicht das machen, was ich will^^ Ich bitte euch um einen kleinen Denkanstoß, was ich falsch mache.
    Danke für Eure Zeit.
    Oh, ich weiss, das ganze wäre einfacher zu lösen mit binärer suche, aber es sollen while und if schleifen sein...

    #include <cstdlib>
    #include <iostream>
    
    using namespace std;
    
    int main(int argc, char *argv[])
    {
        char antwort;
        bool j;
        cout << "Merken Sie sich eine Zahl zwischen 1 und 20." << endl;
        cout << "Ist die Zahl groesser als 10?" << endl;
        cin >> antwort;
    
        while(j=true)
        {
                     cout << "Ist die Zahl groesser als 15?" << endl;
                     cin >> antwort;
                     if(j=true)continue;
                     {
                               cout << "ist die Zahl groesser als 17?" << endl;
                               cin >> antwort;
                               if(j=true)continue;
                               {
                                   cout << "Ist die Zahl kleiner als 20?" << endl;
                                   cin >> antwort;
                                   if(j=true)continue;
                                   {
                                             cout << "Ist die Zahl groesser als 18?"<< endl;
                                             cin >> antwort;
                                             if(j=true)
                                             {
                                                       cout << "Sie haben 19 gewaehlt." << endl;
                                                       break;
                                             }//hier kommt die fehlermeldung und es geht nid weiter:(
                                             else 
                                             {
                                                 cout << "Sie haben die Zahl 18 gewaehlt." << endl;
                                                 break;
                                             }
                                   }
                                   else
                                   {
                                       cout << "Sie haben die Zahl 20 gewaehlt." << endl;
                                       break;
                                   }}
    
                               else
                               {
                                   cout << "Ist die Zahl groesser als 16?" << endl;
                                   cin >> antwort;
                                   if(j==true)
                                   {
                                             cout << "Sie haben die Zahle 17 gewaehlt." << endl;
                                             break;
                                   }
                          else
                          {
                                       cout << "Sie haben die Zahl 16 gewaehlt." << endl;
                                       break;
                                       }
                               }}
                     }  
    
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    


  • mich wundert es, dass das Programm überhaupt läuft.
    1. Du hast Überhaupt keine Bezug auf die antwort des Users(variable antwort)
    2. Ich glaube default value für boolean(j) ist true und somit kommt immer 19!
    3. was soll den bitte nach der if-Abfrage continue?

    das wars mal. kurz überfolgen 🙂



  • vankitz schrieb:

    Oh, ich weiss, das ganze wäre einfacher zu lösen mit binärer suche, aber es sollen while und if schleifen sein...

    Dann implementiere Binäre Suche mit while und if. Das hier ist totaler Mist und so bestimmt nicht im Sinne des Aufgabenstellers.



  • auweh, ok, dann danke für die antworten, ich werds alles nochmal überarbeiten


Log in to reply