Problem mit for-Schleife

fr34k

Mitglied
Hi Leute.

Ich habe folgendes Problem:

Irgendwie funktioniert die for-Schleife nicht. Ich hoffe ihr könnt mir helfen! Die Schleifen sollen ein Arry füllen (ZufallKarte[52]). Kein Element des Arrays soll doppelt vorkommen. Aber beim Starten kommt der nicht mehr aus der Schleife raus und das Prgramm hängt sich auf :)

Code:
int x;
 	srand((unsigned)time(NULL));
 	int schonvorhanden,i,j,y;
 
 	for(i=1;i<=52;i++)
 	{
 		do
 		{
 			schonvorhanden = 0;
 			x = rand()%51+1;
 			for(j=1;j<=i;j++)
 			{
 				if(ZufallKarte[j]==x) schonvorhanden = 1;
 			}
 
 		}while(schonvorhanden==1);
 			ZufallKarte[i] = x; 
 	}

mfg fr34k
 
Hallo,

entferne die <= in den for-Schleifen.

Die for-Schleife überprüft i <= 52 , ja i++ -> i = 53 alle Zufallszahlen vergeben :p

Lass dir, wenn etwas nicht funktioniert Ausgaben von den Werten machen
Code:
 	srand((unsigned)time(NULL));
 	int schonvorhanden,ZufallKarte[52],x,i,j,y;
 
 	for(i=1;i<52;i++)
 	{
 		do
 		{
 			schonvorhanden = 0;
 			x = rand()%51+1;
 			for(j=1;j<i;j++)
 			{
 				if(ZufallKarte[j]==x) schonvorhanden = 1;
 			}
 			cout<<ZufallKarte[j]<<"    "<<x<<"      "<<j<<endl;
 
 		}while(schonvorhanden==1);
 			ZufallKarte[i] = x; 
 	}
so sieht man sofort beim Ausführen das j = 53 :p :p
 
Zuletzt bearbeitet:
Willst du da eigentlich 52 Karten verteilen oder nur 51? Wenn 52, musst du ausserdem die Schleifen bei 0 beginnen lassen. Das rand sollte dann auch % 52 ohne +1 sein.

Mit den Änderungen von Flegmon ist auf jeden Fall die Endlosschleife weg.
 
Zurück