Diesmal ein Problem mit der While Schleife^^



  • Hi

    Ich habe diesen Code geschrieben:

    #include <iostream>
    #include <string>
    #include <cstdlib>
    #include <ctime>
    using namespace std;
    
    int main()
    {
    	time_t sek;
    	cout << "\nRaten Sie eine Zahl zwischen 1 - 15!\n";
    	time( &sek);
    	srand( static_cast <unsigned int> (sek) );
    	const long zahl = (rand()%15)+1;
    	bool eingabe = false;
    	int zahl1, versuch = 1;
    	char wb = 'w';// Das ganze Wb zeug stand so in meinem Buch^^
    	while (wb == 'w')// also das
    	{
    		while(eingabe == false && versuch <= 3)
    		{
    			cin >> zahl1;
    			if (zahl1 == zahl)
    			{
    				eingabe = true;
    				cout << "Richtiiiig!!! :D\n";
    			}
    			if (zahl1 < zahl)
    			{
    				++versuch;
    				cout << "Die Zahl ist zu klein, geben Sie eine neue ein!\n";
    			}
    			if (zahl1 > zahl)
    			{
    				++versuch;
    				cout << "Die Zahl ist zu gros, geben Sie eine neue ein!\n";
    			}
    		}
    		if (eingabe = false)
    		{
    			cout << "Sie haben leider verloren die gesuchte Zahl war: " << zahl 
    				 << " möchten Sie das Spiel wieder holen?\n"
    				 << "Wiederholen --> [W]  Beenden --> [B]";// und das
    		}
    		else
    		{
    			cout << "Sehr Gut Sie haben Gewonnen! Möchten Sie das Spiel wiederholen?"
    				 << "Wiederholen --> [W]  Beenden --> [B]";// und das^^
    		}
    	}
    		do
    		cin >> wb;
    		while ( wb != 'w' && wb != 'b');//und das natürlich^^
    }
    

    So... es hatt halt erst alles geklappt mit dem erraten usw. aber seit ich das mit dem Beenden eingefügt habe verläuft sich das Programm in einer endlos schleife und zeigt die ganze Zeit den "wiederholen --> [W]... Teil an^^

    Ich weiß warscheinlich wirds mal wieder was extrem dummes sein wo mann auch selber drauf kommen könnte:)

    Hoffe ihr helft mir trotzdem 😉

    LG



  • if (eingabe = false)
    

    Ist wohl nicht so gemeint 😉



  • Der Gleichheitsoperator ist in C++ == und nicht = .

    Ausserdem kann man statt

    if (Var == false)
    

    natürlich

    if (!Var)
    

    schreiben.



  • So habs jetzt geändert aber bringen tut es trotzdem nichts....

    #include <iostream>
    #include <string>
    #include <cstdlib>
    #include <ctime>
    using namespace std;
    
    int main()
    {
    	time_t sek;
    	cout << "\nRaten Sie eine Zahl zwischen 1 - 15!\n";
    	time( &sek);
    	srand( static_cast <unsigned int> (sek) );
    	const long zahl = (rand()%15)+1;
    	bool eingabe = false;
    	int zahl1, versuch = 1;
    	char wb = 'w';
    	while (wb == 'w')
    	{
    		while(eingabe == false && versuch <= 3)
    		{
    			cin >> zahl1;
    			if (zahl1 == zahl)
    			{
    				eingabe = true;
    				cout << "Richtiiiig!!! :D\n";
    			}
    			if (zahl1 < zahl)
    			{
    				++versuch;
    				cout << "Die Zahl ist zu klein, geben Sie eine neue ein!\n";
    			}
    			if (zahl1 > zahl)
    			{
    				++versuch;
    				cout << "Die Zahl ist zu gros, geben Sie eine neue ein!\n";
    			}
    		}
    		if (eingabe == false)
    		{
    			cout << "Sie haben leider verloren die gesuchte Zahl war: " << zahl 
    				 << " möchten Sie das Spiel wieder holen?\n"
    				 << "Wiederholen --> [W]  Beenden --> [B]";
    		}
    		else
    		{
    			cout << "Sehr Gut Sie haben Gewonnen! Möchten Sie das Spiel wiederholen?"
    				 << "Wiederholen --> [W]  Beenden --> [B]";
    		}
    	}
    		do
    		cin >> wb;
    		while ( wb != 'w' && wb != 'b');
    }
    

    trotzdem Danke!



  • do
            cin >> wb;
            while ( wb != 'w' && wb != 'b');
    

    Ich bezweifle mal, dass das am richtigen Ort steht..

    Bei dir kann diese Bedingung:

    while (wb == 'w')
    

    gar nie nicht erfüllt sein, weil du wb nirgends veränderst. Daher solltest du wohl eher in der Schleife die Abfrage machen.


Anmelden zum Antworten