Aide pour du random

Fermé
Profil bloqué - 6 janv. 2013 à 18:57
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 6 janv. 2013 à 20:39
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 :)



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:

2 réponses

armasousou Messages postés 1267 Date d'inscription dimanche 16 août 2009 Statut Membre Dernière intervention 30 décembre 2016 83
6 janv. 2013 à 20:31
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);
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
Modifié par fiddy le 6/01/2013 à 21:02
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
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
0