Jo
-
16 juin 2001 à 11:20
cmarsc
Messages postés455Date d'inscriptionmercredi 6 mars 2002StatutMembreDernière intervention18 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.
cmarsc
Messages postés455Date d'inscriptionmercredi 6 mars 2002StatutMembreDernière intervention18 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és4Date d'inscriptionjeudi 15 avril 2004StatutMembreDernière intervention19 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és1Date d'inscriptionsamedi 7 août 2004StatutMembreDernière intervention10 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;
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és455Date d'inscriptionmercredi 6 mars 2002StatutMembreDernière intervention18 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és455Date d'inscriptionmercredi 6 mars 2002StatutMembreDernière intervention18 décembre 2003 11 mai 2004 à 20:17
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,
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.
16 févr. 2005 à 13:26
#include <time.h>
#include <stdlib.h>
il faut initialiser le générateur de nombres pseudo aléatoire
srand((unsigned) time(NULL));
24 janv. 2005 à 23:36
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)
10 août 2004 à 18:26
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...
11 mai 2004 à 21:14
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)
11 mai 2004 à 20:17
pour clrscr (), getch() il faut <conio.h>
1 juil. 2001 à 01:18
- 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)
24 juin 2001 à 12:50
c'est une fonction supplementaire... rien à voir avec le type de compilateur...
le header est disponible dans le programme pandemonium si vous voulez...
16 juin 2001 à 11:22
16 juin 2001 à 11:20
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.