Also:
#include <stdio.h>
#include <stdlib.h> // stdlib.h wird von 'random()' gebraucht
int main(void) {
int lotto[10] = { 0 }; // Alle Elemente in Lotto werden auf 0 gesetzt
int i, j; // Die beiden "Schleifensteuerenden" Variablen
/* Erste for Schleife, in der jedem Element in
* 'lotto' ein zufälliger Wert zugewisen wird
*/
for (i=0; i<10; i++) {
lotto[i] = random(11) + 1;
/* Zweite for Schleife
* Hier überprüïfen wir ob unsere gezogenen Zahl
* schon in 'lotto' vorhanden ist:
* Wir gehen also von lotto[0] bis ein Element vor 'lotto[i]'
* durch
*/
for (j=0; j<i; j++) {
if (lotto[i] == lotto[j]) {
/* Wenn wir eine doppelte Zahl gefunden
* haben, ziehen wir für 'lotto[i]' nochmal eine
* Zahl. Dann setzten wir 'j' auf -1, damit diese
* Zweite for Schleife nochmal durch gelaufen wird.
*/
lotto[i] = random(11) + 1;
// j wird durch j++ in for(..) wieder zu 0
j=-1;
}
}
}
// Hier wird einfach der Array ausgegeben
for (i=0; i<sizeof(lotto) / sizeof(int); i++)
printf("lotto[%d]: %d\n", i, lotto[i]);
return 0;
[/PHP]
Nehmen wir an [i]i[/i] ist 3 und [i]lotto[/i] sieht wie folgt aus:
lotto[0] = 1
lotto[1] = 4
lotto[2] = 3
lotto[3] = 3
Wir kommen jetzt in die 2. for Schleife und überprüfen [i]lotto[3][/i] mit l[i]otto[0][/i] bis [i]lotto[2][/i].
Da der Inhalt von [i]lotto[3][/i] gleich dem Inhalt [i]lotto[2][/i] ist, ziehen wir für [i]lotto[3] [/i]nochmal eine neue Zufallszahl und gehen die 2. for Schleife wieder von neuem durch, es kann ja sein das [i]lotto[3][/i] durch die "neuziehung" 4 ist, dann haben wir eine doppelte Zahl bei [i]lotto[1][/i]
Hoffe das war verständlich?
Gruß