Tirage aleatoire sans remise

Fermé
mahouda Messages postés 31 Date d'inscription lundi 26 novembre 2007 Statut Membre Dernière intervention 11 mai 2009 - 26 avril 2008 à 08:50
choubaka Messages postés 39375 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 14 avril 2024 - 27 avril 2008 à 21:25
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 39375 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 14 avril 2024 2 100
26 avril 2008 à 09:08
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 Date d'inscription lundi 26 novembre 2007 Statut Membre Dernière intervention 11 mai 2009
26 avril 2008 à 09:36
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 Date d'inscription lundi 26 novembre 2007 Statut Membre Dernière intervention 11 mai 2009
27 avril 2008 à 01:41
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 Date d'inscription lundi 26 novembre 2007 Statut Membre Dernière intervention 11 mai 2009
27 avril 2008 à 14:27
bonjour,
aidez moi s'il vous plait...
0
mahouda Messages postés 31 Date d'inscription lundi 26 novembre 2007 Statut Membre Dernière intervention 11 mai 2009
27 avril 2008 à 15:25
help...................................
0
choubaka Messages postés 39375 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 14 avril 2024 2 100
27 avril 2008 à 21:25
quel est l'erreur?
0