Bilder



  • Hi all,
    bin nicht gerade hellst in c++(oberflächenprogrammierung).
    Ich möchte gerne eine zufallszahl zwischen 1 und 5 erstellen und je nach dem was raus kommt geht zur if wenns eine bstimmte zahl ist, soll erdas bild laden, doch es wird nur die 1 gewählt warum ?
    was muss ich machen?

    Danke im vorraus

    srand (unsigned(time));
    	int zufall=rand()%5+1;
    
    	pbo_urne01->Visible = false;
    	pbo_urne02->Visible = false;
    	pbo_urne03->Visible = false;
    	pbo_urne04->Visible = false;
    	pbo_urne05->Visible = false;
    	pbo_urne06->Visible = false;
    
    	if(zufall=1)
    	{
    		pbo_urne02->Visible = true;
    	}
    	else
    	{
    		if(zufall=2)
    		{
    			pbo_urne03->Visible = true;
    		}
    		else
    		{
    			if(zufall=3)
    			{
    				pbo_urne04->Visible = true;
    			}
    			else
    			{
    				if(zufall=4)
    				{
    					pbo_urne05->Visible = true;
    				}
    				else
    				{
    					if(zufall=5)
    					{
    						pbo_urne05->Visible = true;
    					}
    
    				}
    			}
    		}
    	}
    


  • = ist eine Zuweisung.
    zufall=1 weist der Variablen zufall den Wert 1 zu.
    (zufall=1) "sieht von außerhalb der Klammer wie eine 1 aus", ist also ungleich 0, also wahr

    Ergo: if (zufall=1) ... wird immer ausgeführt

    Einen Vergleichstest macht man mit ==, also

    if (1 == zufall) ...
    

    Die 1 steht links, um genau deinen Fehler zu verhindern, falls ich mich mal vertippe, da dann der Compiler meckert.

    PS: Wenn du als nächstes das Kapitel "Arrays" lernst, dann kannst du dein Listing drastisch in der Größe reduzieren.



  • Ja danke das mir auch noch eingefallen sorry^^.
    Aber trotzdem besteht das problem weiterhin.
    immer wenn ich das programm starte, wird immer bild 5 ausgewählt.
    woran liegt das?

    srand (unsigned(time));
    	int zufall=rand()%5+1;
    
    	pbo_urne01->Visible = false;
    	pbo_urne02->Visible = false;
    	pbo_urne03->Visible = false;
    	pbo_urne04->Visible = false;
    	pbo_urne05->Visible = false;
    	pbo_urne06->Visible = false;
    
    	if(1==zufall)
    	{
    		pbo_urne02->Visible = true;
    	}
    	else
    	{
    		if(2==zufall)
    		{
    			pbo_urne03->Visible = true;
    		}
    		else
    		{
    			if(3==zufall)
    			{
    				pbo_urne04->Visible = true;
    			}
    			else
    			{
    				if(4==zufall)
    				{
    					pbo_urne05->Visible = true;
    				}
    				else
    				{
    					if(5==zufall)
    					{
    						pbo_urne06->Visible = true;
    					}
    
    				}
    			}
    		}
    	}
    


  • Die Variable time hat auch sicher immer einen anderen Wert, ja?
    Oder war damit der Funktionsaufruf time(NULL) gemeint?



  • srand (unsigned(time));
    ist doch nur dafür da um den zufallsgenerator zu aktivieren

    int zufall=rand()%5+1;
    hiermit soll eine zufallszahl zwischen 1 und 5 ermittle werden

    versteh jetzt nicht was du mit time meinst



  • Also, wenn ich den Zufallsgenerator "aktiviere" mit srand und immer diegleiche Zahl übergebe, dann werden auch immer die gleichen Zahlen in gleicher Reihenfolge gezogen.



  • und was soll ich da jetzt machen?



  • C_Style schrieb:

    und was soll ich da jetzt machen?

    srand(time(0));
    


  • Blue-Tiger schrieb:

    srand(time(0));
    

    Und es reicht im Grunde, das ein einziges mal (z.b. beim Programmstart) aufzurufen.


Anmelden zum Antworten