Lotto
-
moin.
hab für die schule ein Lotto programm schreiben wollen
sieht so aus:#include <stdio.h> #include <time.h> #include <conio.h> int main() { int lotto[7]={0}; // lotto[0] -> Temp für Bubblesort lotto[1] bis lotto[6] für die Lottozahlen int i=1, k=1; printf("<<Lottogenerator! Press Enter to continue>>"); getch(); for(i=1; i<7; i++) { lotto[i]=srand(time(0))%49 +1; for (k=1; k<7; k++) if(lotto[i] == lotto[k]) i--; } for(i=1; i<7; i++) printf("\n%i. %i",i,lotto[i]); getch(); }
Ist klar was es machen soll: 6 mal geht es eine schleife durch die die Werte der Arrays "lotto[i]" auf zufalls zahlen zwischen 1-49 gesetzt werden soll.
nach dem vorgang wird aber mit jedem der 6 arrays die die letzte gezogene zahl vergleichen und wenn diese gleich ist wird i um eins runter gesetzt -> ergo: er macht die aktuelle ziehung nochmal.dannach gibts nur noch die ausgabe der lottozahlen..
aber das programm hängt sich auf.. das hängt nach einigen tests auch glaub ich mit der for-if schleife zusammen die i--; setzt...
wisst ihr eine Lösung? danke im vorraus
-
Die Funktion srand() initalisiert nur den Zufallszahlengenerator.
Diese Funktion musst du nur einmal am Anfang aufrufen.
Zum Erzeugen einer Zufallszahl verwendest du dann rand()
-
hm.. hab ich schon geändert aber wenns dann
#include <stdio.h> #include <stdlib.h> #include <conio.h> #include <time.h> int main() { int lotto[7]={0}; // lotto[0] -> Temp für Bubblesort; lotto[1] bis lotto[6] -> Lottozahlen int i=1, k=1; srand(time(0)); printf("<<Lottogenerator! Press Enter to continue>>"); getch(); do { lotto[i] = (rand()%49+1); k=1; while (k<7) if(lotto[i] == lotto[k]) { i--; k=10; } i++; } while (i<7); for(i=1; i<7; i++) printf("\n%i. %i",i,lotto[i]); getch(); }
ist funkt es genauso wenig...
-
// doch nicht.
-
In der inneren Schleife solltest du auf k<i überprüfen.
Sonst ist es ja klar das es jedesmal einen Treffer gibt.
Zum Stil: Schonmal was von continue und break gehört?//EDIT
Achja Arrays fangen bei 0 mit dem zählen an. lotto[0] ist also
das erste Element! Wenn du das nicht beachtest hast du am Schluss
eine Zahl zu wenig.
-
doch:
#include <stdlib.h> #include <stdio.h> #include <time.h> void do_draw( unsigned short draw[ 7 ] ) { unsigned short pod[ 49 ]; size_t i = 0; size_t current; for( ; i < 49; pod[ i ] = i + 1, ++i ); for( i = 0; i < 7; ++i ) { do { current = rand( ) % 49; } while( !pod[ current ] ); draw[ i ] = pod[ current ]; pod[ current ] = 0; } } int main() { unsigned short draw[ 7 ]; size_t i = 0; srand( ( ( unsigned ) time( 0 ) ) ); do_draw( draw ); puts( "Die Lottozahlen:" ); for( i = 0; i < 6; ++i ) { printf( "%i, ", draw[ i ] ); } printf( "Zusatzzahl: %i\n", draw[ 6 ] ); }
greetz, Swordfish
-
naja hab iwie rumgefummelt und mit ner forschleife anstatt ner while gings dann letzt endlich.
thx @swordfisch ^^" aber die meisten befehle davon sind mir neu und war eigendlich nur auf fehler suche.. trotzdem ty
@strom: steht als comment dahinter das lotto[0] quasi eine temp variable ist
^^ das war der erste part und schließend wollte ich lotto[0] also temp für bubblesort usen.
trotzdem danke euch beiden!
-
#include <stdio.h> #include <time.h> int main() { int lotto[7]={0}; // lotto[0] -> Temp für Bubblesort lotto[1] bis lotto[6] für die Lottozahlen int i,k; printf("<<Lottogenerator! Press Enter to continue>>"); getchar(); srand(time(0)); for(i=1; i<7; i++) { lotto[i]=rand()%49 +1; for (k=1; k<i; k++) if(lotto[i] == lotto[k]) i--; } for(i=1; i<7; i++) printf("\n%i. %i",i,lotto[i]); getchar(); }