Wo ist der Fehler??



  • Hallo! Hier in dieser Funktion ist irgendwo ein Fehler. Bei der 1. Ausgabe
    der Zufallszahl stimmt der Wert noch aber bei der zweiten Ausgabe wird
    nur noch Müll ausgegeben. Woran liegt das??

    int karteZiehen()
    {
    	int auswahl, zufall;
    	bool fQuit = true;
    
    	while(fQuit)
    	{	int zufall = 2 + rand() % 10;
    		cout << "\n\n " << zufall << "\n\n";       //Wert stimmt noch
    		if (zufall == 5 || zufall == 6) continue;
    		else if (zufall == 11)
    		{
    			cout << "As gezogen. Als 1 Punkt oder 11 Punkte werten?";
    			while(true)
    			{
    				cin >> auswahl;
    				if (auswahl == 1 || auswahl == 11)
    					break;
    				else
    					continue;
    			}
    		}
    		else fQuit = false;
    	}
    	cout << "\n\n " << zufall << "\n\n";   // Wert ist falsch
    	cout<< "karteziehenfunk ...\n";
    	welcheKarte(zufall);
    	return zufall;
    }
    

    Ich bin mir sicher, dass der Fehler total offensichtlich ist, aber ich find ihn einfach nicht. 😞



  • Du hast zwei Variablen, die beide zufall heißen. Die eine ist auf der Ebene der Funktion definiert, das ist die, die du unten ausgibst. Da sie nie initialisiert wurde, enthält sie logischerweise Müll.
    Die andere wird in der while-Schleife definiert. Da sie genauso heißt wie die äußere, verdeckt sie diese. Wenn die while-Schleife abbricht, hört sie auf zu existieren.
    Auf die Lösung müsstest du jetzt selbst kommen.



  • Tatsächlich! Es war gar nicht meine Absicht 2 Variabeln mit dem gleichen Namen zu erzeugen. Ich wusste gar nicht, dass das überhaupt möglich ist. Ich dachte es käme ein Compilerfehler wenn man das versucht... Der Rest ist ja jetzt einfach.
    Also danke!


Anmelden zum Antworten