Tirage aleatoire sans remise

mahouda Messages postés 31 Statut Membre -  
choubaka Messages postés 5526 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,
je veux que mon programme affiche une lettre parmis 5 lettres aleatoirement mais à condition que la lettre qui s'est deja apparu ne se repette plus;j'ai reussi à faire un programme qui affiche une lettre aleatoirement mais sans la condition de l'apparition de la lettre une seule fois .voici le programmme dont je vous ai parlé:

#include <time.h>
#include <stdlib.h>

int main (void)
{
int entier ;
char son[4];

srand (time (NULL));

entier=1+rand() % 5;

printf("%d\n",entier);
switch(entier)
{
case 1:
son[0]='m'; son[1]='a';son[2]='\0';break;
case 2:
son[0]='t';son[1]='a';son[2]='\0';break;
case 3:
son[0]='r';son[1]='a';son[2]='\0';break;
case 4:
son[0]='b';son[1]='o';son[2]='n';son[3]='\0';break;
case 5:
son[0]='c';son[1]='o';son[2]='\0';break;
}
printf("le mots que vous devez chercher contient le son: %s \n",son) ;

system("pause");
return 0;

}

4 réponses

choubaka Messages postés 5526 Date d'inscription   Statut Modérateur Dernière intervention   2 106
 
salut

une solution serait de stocker les lettres au fur et à mesure dans une structure de données (un arraylist par exemple) et lors de la désignation des autres lettres contrôler dans cette structure si elle n'y est pas déjà présente. si c'est le cas, il faut recommencer la recherche aléatoire jusqu'à ce que se soit correct.

J'espère avoir été clair.

donc en gros l'algo donnerait ceci

1. Désignation aléatoire de la première lettre
2. stockage dans l'arraylist
3. désignation de la lettre suivante
4. contrôle de l'arraylist
5. si contrôle ok, retour au point 2
6. si pas ok, retour au point 3

voilà
1
mahouda Messages postés 31 Statut Membre
 
merci beaucoup,je suis entrain d'appliquer ce que vous m'avez dit et je vous le postulerai quand je termine pour voir ce qui va donner;
merci encore une fois
0
mahouda Messages postés 31 Statut Membre
 
je suis de retour.
voici ce que j'ai trouvé mais il n'a pas bien fonctionné;


#include <time.h>
#include <stdlib.h>
#include<stdio.h>

int tirageAleatoire(void)
{
int entier ;


srand (time (NULL));
entier=1+rand() % 5;


return (entier);

}
void affichage(int entier)
{

char son[4];
switch(entier)
{
case 1:
son[0]='m'; son[1]='a';son[2]='\0';break;
case 2:
son[0]='t';son[1]='a';son[2]='\0';break;
case 3:
son[0]='r';son[1]='a';son[2]='\0';break;
case 4:
son[0]='b';son[1]='o';son[2]='n';son[3]='\0';break;
case 5:
son[0]='c';son[1]='o';son[2]='\0';break;
}
printf("le mots que vous devez chercher contient le son: %s \n",son) ;
}

int main (void)
{
char son[4];
int entier;
int *p=NULL;
int i=1;int j=1;
p=(int *) malloc(sizeof(int));
entier=tirageAleatoire();
affichage(entier);
p[i]=entier;
do{

do{
entier=tirageAleatoire();
}while(p[i]==entier);

affichage(entier);
i=i+1;
p[i]=entier;
}while(i<=5);




system("pause");
return 0;
}
0
mahouda Messages postés 31 Statut Membre
 
bonjour,
aidez moi s'il vous plait...
0
mahouda Messages postés 31 Statut Membre
 
help...................................
0
choubaka Messages postés 5526 Date d'inscription   Statut Modérateur Dernière intervention   2 106
 
quel est l'erreur?
0