LOTO (EN C)

Jo - 16 juin 2001 à 11:20
cmarsc Messages postés 455 Date d'inscription mercredi 6 mars 2002 Statut Membre Dernière intervention 18 décembre 2003 - 16 févr. 2005 à 13:26
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/9144-loto-en-c

cmarsc Messages postés 455 Date d'inscription mercredi 6 mars 2002 Statut Membre Dernière intervention 18 décembre 2003
16 févr. 2005 à 13:26
salut,
#include <time.h>
#include <stdlib.h>
il faut initialiser le générateur de nombres pseudo aléatoire
srand((unsigned) time(NULL));
mhidoo Messages postés 4 Date d'inscription jeudi 15 avril 2004 Statut Membre Dernière intervention 19 novembre 2005
24 janv. 2005 à 23:36
SALUT
moi je vouderais faire une fonction de mélange d'un paquet de carte de 104 cartes, mais avec ce que j'ai fais j'ai toujours le mm paquet mélangé
aidez moi svp (je ss debutant en C)
cleg123 Messages postés 1 Date d'inscription samedi 7 août 2004 Statut Membre Dernière intervention 10 août 2004
10 août 2004 à 18:26
Beaucoup plus court et plus efficace ( d'accord sans la sortie écran formattée... )

int main(int nb, char **argv)
{
unsigned char tab[49];
int i,max,indice;

for(i=0;i<49;i++)
{ tab[i] = 1; }

srand(time(0));

for( max=1 ; max < 8 ; )
{
indice = rand()%49;
if( tab[indice] != 0 )
{
printf("Numéro %1d : %2d \n",max, (indice+1) );
tab[indice] = 0; // On flambe ce numéro.
max++;
}
}

return(0);
}


L'idée reste ultra simple : en fait on initialise un tableau de 49 [nombre de numéros possible en fait ] et on génére aléatoirement l'indice du tableau qui va sortir. Si la valeur du tableau à l'indice qui vient de sortir vaut 1 alors le numéro n'est pas sorti donc on affiche puis on réinitialise la case à 0 ( en clair ce numéro ne pourra plus sortir ). On continue tant que l'on a pas nos 7 chiffres. Sur ce type de programme, cette structure fonctionne à merveille mais cela cache en fait une liste chainée...
cmarsc Messages postés 455 Date d'inscription mercredi 6 mars 2002 Statut Membre Dernière intervention 18 décembre 2003
11 mai 2004 à 21:14
il faut egalement <time.h> avec randomize
tu as un prototype int num() il faudrait écrire int num(void); (c'est du C et non du C++) et le placer avant main.
main return 0; et int num return ? (int)
cmarsc Messages postés 455 Date d'inscription mercredi 6 mars 2002 Statut Membre Dernière intervention 18 décembre 2003
11 mai 2004 à 20:17
salut,
pour clrscr (), getch() il faut <conio.h>
2 erreurs :
- Au lieu d'utiliser toute une tripotée de variable, fait un tableau, comme ca tu pourra en profiter pour simlifier l'initialisaion et le while.
- randomize(); C'est une fonction basée sur l'horloge (=> longue) il est preferable de ne l'executer qu'une fois (dans "main")
Note pour Jo : Sisi c'est bien du Turbo C mais ne le prend pas mal ;o)
clrscr();
c'est une fonction supplementaire... rien à voir avec le type de compilateur...
le header est disponible dans le programme pandemonium si vous voulez...
Salut Jo, j'ai fait ce programme sous Turbo C et pas sur Borland c++ !
Salut,
petite info, ton code n'est pas en C mais en borland c++, car en ANSI-C les fonction:
clrscr(); randomize(); et getch(); n'existe pas, enfin ceci c'est juste pour infoo, ne le prend surtout pas mal.
Rejoignez-nous