Zufallszahl
-
Hallo,
ich wollte einen Zufallsgenerator für 5 Zahlen die nicht doppelt vorkommen dürfen programmieren. Es kommen aber Zahlen doppelt vor, wo könnte der Fehler sein.
int main() { srand ( time(NULL) ); int zahl[5] = {0}; int num; int i; num=0; i=0; while ( zahl[4]==0 ) { num=rand()%7+1; if( num != (zahl[0] || zahl[1] || zahl[2] || zahl[3] || zahl[4]) ) { zahl[i]=num; i++; } } printf("%d %d %d %d %d\n", zahl[0], zahl[1], zahl[2], zahl[3], zahl[4]); return 0; }
MfG
-
if( num != (zahl[0] || zahl[1] || zahl[2] || zahl[3] || zahl[4]) )
Also
if( num != zahl[0] && num != zahl[1] && ...) )
-
der ausdruck in zeile 17 ist so nicht richtig, da die innerste klammer immer zuerst ausgewertet wird, hier wird also geprüft ob die variablen einen wert ungleich null haben, und mit einem logischen or verknüpft. Der Ausdruck wird also in 99% der Fälle true ergeben, und dies wird mit der variable num verglichen. Wenn diese ebenfalls einen wert ungleich null hat ist die gesamtbedingung true.
-
danke
-
Habe noch ein Problem in der Zeile 30 bis 43. Nach einem Tastendruck bzw. einer Eingabe hätte ich gerne dass es den Rest der while-Schleife durchläuft. Das Problem ist jetzt, erst wenn ich Enter drücke prüft es die Schleife und gibt es aus. Hätte auch gerne dass es nach jedem Tastendruck einen Abstand macht.
Geht das nur scanf?
int main() { srand ( time(NULL) ); int zahl[5] = {0}; int num; int i,j; char eingabe[5] = {0}; num=0; i=0; j=0; printf("M A S T E R M I N D\n\n"); while ( zahl[4]==0 ) { num=rand()%7+1; if( (num != zahl[0]) && (num != zahl[1]) && (num != zahl[2]) && (num != zahl[3]) && (num != zahl[4]) ) { zahl[i]=num; i++; } } printf("%d %d %d %d %d\n", zahl[0], zahl[1], zahl[2], zahl[3], zahl[4]); while(j<=4) { eingabe[j] = getchar(); if ( (eingabe[j]>=1) && (eingabe[j]<=7) ) { j++; } else { printf("Zahl von 1 bis 7 eingeben.\n"); j=0; } } return 0; }
-
Hat niemand einen Ansatz?
-
Ich verstehe dein Problem nicht.
Welchen Rest soll er durchlaufen?
"prüft es die Schleife". Was?
Was für einen Abstand?
-
Ich will 5 Zahlen eingeben.
Wenn ich bei
eingabe[j] = getchar();
eine Zahl eingebe, soll es gleich prüfen ob es zwischen 1 und 7 ist. Das Problem ist, erst wenn ich Enter drücke prüft es alle 5 Zahlen auf einmal.
getch() kann ich bei linux nicht verwenden.