while(z%2==1)
-
was bedeutet denn dieser Befehl?
Es sollte etwas berechnet werden, und mittels eine do while Schleife
sollte das Ergebnis daraufhin geprüft werden ob es gerade ist, wenn nicht, dann wiederholen....Mit obigem, gegebenen, Befehl sollte es gehen, aber das Ergebnis sind auch gerade Zahlen.
Wie funktioniert diese Anweisung (C Anfänger)
Z%2 ?do{ z=rand()%(n*n)+1; } while(z%2==1);
-
Das ist der Modulo-Operator. Damit kannst du den Rest bestimmen.
Beispiel:
4 % 2 = 0 (lässt sich glatt durch 2 teilen, Rest 0)
5 % 2 = 1 (lässt sich nicht glatt durch 2 teilen, Rest 1)
6 % 2 = 0 (lässt sich glatt durch 2 teilen, Rest 0)Man kann das dafür nutzen, um herauszufinden, ob eine Zahl gerade (also ohne Rest durch 2 teilbar) ist.
-
als Ergebnis (Z) kommt aber dennoch eine ungerade Zahl aus, obwohl das nach meinem Verständnis eine Wiederholung der Schleife auslösen sollte ....
-
cneu schrieb:
was bedeutet denn dieser Befehl?
Es sollte etwas berechnet werden, und mittels eine do while Schleife
sollte das Ergebnis daraufhin geprüft werden ob es gerade ist, wenn nicht, dann wiederholen....Mit obigem, gegebenen, Befehl sollte es gehen, aber das Ergebnis sind auch gerade Zahlen.
Es sind als Ergebnis sogar NUR gerade Zahlen.
Denn wenn sie nicht gerade wären, wäre ja nochmal gewürfelt worden.
-
cneu schrieb:
als Ergebnis (Z) kommt aber dennoch eine ungerade Zahl aus, obwohl das nach meinem Verständnis eine Wiederholung der Schleife auslösen sollte ....
Ich hab den Codeausschnitt getestet und er arbeitet vollkommen korrekt. Wenn es bei dir nicht geht, dann liegt das an irgendwas anderem. In dem Fall musst du mehr Code (und auch exakt deinen eigenen Code) posten.
-
cneu schrieb:
als Ergebnis (Z) kommt aber dennoch eine ungerade Zahl aus, obwohl das nach meinem Verständnis eine Wiederholung der Schleife auslösen sollte ....
while(z%2==1)
bedeutet:
wiederhole die Schleife, solange z ungerade ist