Aide pour du random
Profil bloqué
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Depuis quelques temps je me suis amusé à développer un petit programme inutile. Mais comme je n'ai pas de grandes connaissances dans le domaine je suis un peu bloqué.
Je pense que c'est assez simple, mais étant donné que je suis idiot je tourne en rond...
Le programme en question est en console, et fonctionne de manière très simple : on entre "bonjour" par exemple, et il affiche à l'écran "salut".
Ce que j'aimerais, c'est faire en sorte qu'en entrant "bonjour" il puisse sortir aléatoirement 3 ou 4 phrases, plutôt que toujours la même.
if "bonjour" > else "salut" | "coucou" | "radiateur"
J'ai énormément de mal, alors si quelqu'un pouvais m'apporter la solution... Je sais déjà qu'il faut utiliser la library time.h mais je n'arrive pas du tout à placer tout ça correctement.
Un bout du code pour vous aider à m'aide :)
Alors comment faire pour mettre 2 ou 3 réponses aléatoire dans ce minuscule bout de code ?
100€ à celui qui m'aidera. (je paye en 128 fois ;) )
Depuis quelques temps je me suis amusé à développer un petit programme inutile. Mais comme je n'ai pas de grandes connaissances dans le domaine je suis un peu bloqué.
Je pense que c'est assez simple, mais étant donné que je suis idiot je tourne en rond...
Le programme en question est en console, et fonctionne de manière très simple : on entre "bonjour" par exemple, et il affiche à l'écran "salut".
Ce que j'aimerais, c'est faire en sorte qu'en entrant "bonjour" il puisse sortir aléatoirement 3 ou 4 phrases, plutôt que toujours la même.
if "bonjour" > else "salut" | "coucou" | "radiateur"
J'ai énormément de mal, alors si quelqu'un pouvais m'apporter la solution... Je sais déjà qu'il faut utiliser la library time.h mais je n'arrive pas du tout à placer tout ça correctement.
Un bout du code pour vous aider à m'aide :)
static void videBuffer(void) { int c; while ((c=getchar()) != '\n' && c != EOF); } int main(void) { char *p; fflush(stdout); char chaine[255]; while(fgets(chaine, sizeof chaine, stdin)!=NULL) { char *p=strchr(chaine,'\n'); if(p!=NULL) *p='\0'; else videBuffer(); if (p != NULL) { *p='\0'; } else { } // ----- Bonjour ----- if (strcmp(chaine, "bonjour")==0) puts("\nBonjour !"); else if (strcmp(chaine, "salut")==0) puts("\nSalut"); // ----- Fin du programme ----- } return 0; }
Alors comment faire pour mettre 2 ou 3 réponses aléatoire dans ce minuscule bout de code ?
100€ à celui qui m'aidera. (je paye en 128 fois ;) )
A voir également:
- Aide pour du random
- Chat random - Accueil - Réseaux sociaux
- Random Java ✓ - Forum Java
- Timer random - Forum Java
- Random. chat - Accueil - Réseaux sociaux
- Random en RUBY ✓ - Forum Ruby
2 réponses
1) #include <time.h>
2) initialisation de la graine : srand(time(null));
3) tu lance la fonction rand().
4) pour avoir un nombre entre 0 et x => (int)((double)rand()/RAND_MAX*x);
2) initialisation de la graine : srand(time(null));
3) tu lance la fonction rand().
4) pour avoir un nombre entre 0 et x => (int)((double)rand()/RAND_MAX*x);
Bonjour,
Pour commencer, des remarques sur le programme :
fflush(stdout); Pourquoi un fflush() ici ? Inutile.
if (p != NULL) {
*p='\0';
}
Pourquoi mettre deux fois cette comparaison ? Une fois suffit.
Sinon pour afficher aléatoirement, je te conseille d'utiliser un tableau.
Par exemple : char *tableau[]={"Salut", "Coucou", "Hey", "Hello"};
Ensuite, il te suffit de tirer un nombre aléatoire :
A n'appeler qu'une fois
Puis dans le if(strcmp(..., "Bonjour")==0) {...
Tu peux mettre tableau[rand()...] dans une fonction pour plus de simplicité.
Google is your friend
Pour commencer, des remarques sur le programme :
fflush(stdout); Pourquoi un fflush() ici ? Inutile.
if (p != NULL) {
*p='\0';
}
Pourquoi mettre deux fois cette comparaison ? Une fois suffit.
Sinon pour afficher aléatoirement, je te conseille d'utiliser un tableau.
Par exemple : char *tableau[]={"Salut", "Coucou", "Hey", "Hello"};
Ensuite, il te suffit de tirer un nombre aléatoire :
A n'appeler qu'une fois
srand(time(NULL)); /*pour générer la graine*/
Puis dans le if(strcmp(..., "Bonjour")==0) {...
puts(tableau[(int)(rand() / (double)RAND_MAX * (sizeof tableau/sizeof *tableau - 1))]);
Tu peux mettre tableau[rand()...] dans une fonction pour plus de simplicité.
Google is your friend