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 -
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;
}
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;
}
A voir également:
- Tirage aleatoire sans remise
- Remise a zero pc - Guide
- Tirage au sort excel aléatoire sans doublon - Forum LibreOffice / OpenOffice
- Delai paiement le bon coin remise en main propre - Forum Vos droits sur internet
- Tirage aléatoire sans doublon : de plus en plus fort ... ! ✓ - Forum Excel
- Remise a zero chromecast - Guide
4 réponses
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à
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à
merci encore une fois
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;
}