Aide pour du random

Profil bloqué -  
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 :)



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 1268 Date d'inscription   Statut Membre Dernière intervention   83
 
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   Statut Contributeur Dernière intervention   1 846
 
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