While-Schleife
-
Hallo,
ich bin ein absoluter Anfänger in C und ich mache zur Zeit ein Kurs in c. Keine Angst ich will hier nicht im Thema meiner Dozentin vorgreifen. Aber ich habe ein Problem zu einem Programmteil und möchte das eigentlich bis zur nächsten Stunde verstanden haben wo der Fehler liegt.
Ich möchte eine Zufallszahl generieren die zwischen 7 und 11 liegt dazu habe ich folgenden Code geschrieben:
while(w>=7) {w=rand()%11;}
natürlich habe ich die Variablen zugewiesen und soweiter. Und das Programm läuft auch so weit. Das soll heißen das das Ursprungsprogramm eine Zufallszahl von 1 bis 6 generiert (würfelspiel) doch sobald ich dann die Whileschleife einbaue kommt nur 0 bzw 1 raus.
Die while schleife wird doch solange abgearbeitet bis die Bedingung erfüllt ist oder? und in meinen Fall sollte doch die Schleife erfüllt sein wenn w größer als 7 ist. Ich habe dann versucht die Variable w eine 1 zuzuweisen aber dann erhalte ich immer eine 1 als Ergebniss.
Vielen Dank im Vorraus für eure Antworten
-
Raorkon schrieb:
Die while schleife wird doch solange abgearbeitet bis die Bedingung erfüllt ist oder?
Nein. Die Schleife wird abgearbeitet, solange die Bedingung erfüllt ist.
Übrigens würde ich empfehlen, eine Zufallszahl zwischen 0 und 4 zu erzeugen und dann 7 zu addieren. Damit brauchst du keine Schleife mehr.
-
jeep das wäre clever.
Auf die Idee bin ich natürlich noch nicht gekommen.
thx
-
Nein.
while(X) { Y } bedeutet, daß Y so lange ausgeführt wird, wie X wahr ist.
Bei dir werden also neue Zufallszahlen gezogen, so lange w>=7 ist. Wenn Du vor der Schleife w=1 setzt, dann ist w>=7 aber falsch und die while-Schleife wird nie betreten. Dieses Verfahren ist folglich auch nicht besonders nützlich, wenn man Zufallszahlen zwischen 7 und 11 erzeugen möchte.
Du möchtest eher "while(w<7) w=rand()%11;" Aber eigentlich solltest Du das Problem eher folgendermaßen formulieren:
w=7+rand()%5;
Dabei erzeugst Du eine Zufallszahl zwischen 0 und 4 und addierst darauf 7, so daß das Intervall 7 bis 11 abgedeckt wird.