Lotto-Programm Hilfe bei c programmierung?
Hallo ich musste bisher ein kleines lotto programm in C programmieren :
Meine Frage ist wie kann ich es umprogrammieren sodass KEINE Zahl doppelt erscheint. ...
Also 6 Zahlen werden per zufall gebildet dürfen aber nicht doppelt erscheinen.
Danke für eure Hilfe
/*
* lotto.c: 6 aus 49
* Demoprogramm
*/
# include <stdio.h> /* printf */
# include <stdlib.h> /* srand, rand */
# include <time.h> /* time */
# define ANZAHL 6
int main()
{
int zahlen[ 6], i;
char jn[ 2];
/* Zufallsgenerator */
srand(time( NULL));
/* Ziehung */
do
{
for( i = 0; i < ANZAHL; i++)
{
zahlen[ i] = rand() % 49 + 1;
/* ÜBERPRÜFUNG */
//FEHLT!!
}
/* Ausgabe */
for( i = 0; i < ANZAHL; i++)
printf( "\t%d ", zahlen[ i]);
/* Weiter */
printf( "\tWeiter (j/n)?");
scanf( "%1s", jn);
} while( jn[ 0] == 'j');
return 0;
}
3 Antworten
Das geht mit einer Mischliste. Nimm eine Liste mit 49 Elementen, und trage die Werte 1..49 ein. Dann mische die Liste mittels eines Zufallszahlengenerators. Egal, wie sie gemischt ist, es kommen keine doppelten Werte vor.
Hau die schon gezogenen Zahlen in ein Array und bei jeder neuen Ziehung schaust du in dem Array nach ob die Zahl schon mal gezogen wurde. Falls ja, musst du halt noch eine Zahl ziehen.
Mach ein array mit 49 Elementen. Initialisiere alle Elemente auf 0. Wenn du dann eine Zahl würfelst setzt du das entsprechende Element im Array auf 1. Jedes mal wenn du würfelst prüfst du dann, ob diese Zahl im Array bereits markiert ist. Wenn ja, nochmal würfeln, wenn nein, dann Zahl markieren und zur nächsten Zahl gehen.