Bonjour,
Sujet
Vous décidez à présent de vous lancez dans le business des jeux d’argents et d’organiser une grande loterie.
Vous devez réaliser un programme qui invite l’utilisateur à saisir le nombre de tickets mis en jeu, le nombre de lots (nécessairement inférieur ou égal au nombre de tickets) et les numéros desdits tickets. Il faut ensuite afficher les numéros des tickets gagnants (ils doivent être tirés aléatoirement) pour chaque lot avec cette contrainte : un ticket ne peut gagner qu’une seule fois 2. Bien entendu, vous compartimenterez votre programme et vous veillerez à libérer correctement la mémoire allouée dynamiquement.
Mon code
La fonction OccurenceLotsGagnant
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 printf("\n[Loterie]\n\n"); printf("Nombre de tickets mis en jeu : "); unsigned int nbTickets, nbLots; scanf("%d", &nbTickets); printf("Nombre de lots : "); scanf("%d", &nbLots); if (nbLots >= nbTickets) return printf("Nombre de lots >= Nombre de tickets !\n"); int *tableau = (int*)malloc(nbTickets * sizeof(int)); if (tableau == NULL) { printf("Plus de memoire !\n"); exit(0); } printf("Tickets : \n"); for (i = 0; i < nbTickets; i++) scanf("%d", &tableau[i]); printf("\n[Tickets gagnants]\n"); srand(time(NULL)); unsigned int m; unsigned int* tableauLots = (unsigned int*)malloc(nbLots * sizeof(unsigned int)); if (tableauLots == NULL) { printf("Plus de memoire !\n"); exit(0); } for (i = 0; i < nbLots; i++) { m = (rand() % nbLots) + 1; tableauLots[i] = tableau[m]; //if ( (OccurenceLotsGagnants(tableauLots, tableau[m])) > 1) m = (rand() % nbLots) + 1; printf("Lot %d : %d\n", i, tableau[m]); } free(tableau);
Question
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 unsigned int OccurenceLotsGagnant(unsigned int *tab, unsigned int x) { if (*tab == x) { return 1 + OccurenceLotsGagnant(tab + 1, x); } else { return OccurenceLotsGagnant(tab + 1, x); } }
Comment faire en sorte que si l’élément apparaît plus d'une fois, refaire un random etc jusqu’à la dernière valeur ?
Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part if ( (OccurenceLotsGagnants(tableauLots, tableau[m])) > 1) m = (rand() % nbLots) + 1;
Partager