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 wahrErgo: 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 aktivierenint zufall=rand()%5+1;
hiermit soll eine zufallszahl zwischen 1 und 5 ermittle werdenversteh 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.