Problème d'affichage récurent.

Résolu/Fermé
gwharl Messages postés 9 Date d'inscription vendredi 18 septembre 2009 Statut Membre Dernière intervention 17 avril 2012 - 19 sept. 2009 à 12:35
gwharl Messages postés 9 Date d'inscription vendredi 18 septembre 2009 Statut Membre Dernière intervention 17 avril 2012 - 19 sept. 2009 à 15:14
Bonjour à tous,

Mon problème survient à la fin de mon programme lors de l'affichage de la valeur de la réponse fournie, j'ai prévu pour que le programme affiche soit réponse bonne, ou réponse fausse, mais comme vous pourrez le voir il l'affiche plusieurs fois sans interruption, surement à cause de mes while ça doit être pas mal redondant, si vous avez des astuces aussi pour améliorer le code je vous en serez reconnaissants.



#include <iostream> //biblio use
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>


using namespace std; //espace stand pour cout

int main( int argc, char *argv[] )
{     
      
      string pseudo;
      string reponse;
      // initialisation du générateur de nombres pseudo-aléatoire
      srand( time( NULL ) );  
      
      cout<<endl; //saut de ligne
      cout<<"|********************************************************|"<<endl;
      cout<<"Bonjour a toi, entre ton pseudo pour commencer la partie :"<<endl;
      cout<<"|********************************************************|"<<endl;
      cout<<endl;
      
      cout<<"|*************************|"<<endl;
      cin>>pseudo;
      cout<<"|*************************|"<<endl;
      cout<<endl;
      
      cout<<"Le jeu est simple "<<pseudo<<", apres avoir appuye sur une touche une"<<endl;
      cout<<"fonction choisira aleatoirement une question qui sera"<<endl;
      cout<<"afficher a laquelle tu devra fournir une reponse."<<endl;
      cout<<endl;
      
      cout<<"Quand tu sera pret "<<pseudo<<" appuis sur une touche."<<endl;
      cout<<endl;
      
system("PAUSE");
      cout<<endl;
      cout<<endl;



      int nb=rand()%10; //genere rand
     
     
     //rand de questions
     {     
          if (nb<=1)
         {
                cout<<"Combien font 2+2 ?"<<endl;
         }
         else if (nb==2)
         {
                cout<<"Combien font 6x7 ?"<<endl;
         }
         else if (nb==3)
         {
                cout<<"Combien font 5 au carre ?"<<endl;
         }
         else if (nb==4)
         {
                cout<<"Combien font 0/6541561561 ?"<<endl;
         }
         else if (nb==5)
         {
                cout<<"Combien font Racine de 2 (Arrondi au millieme) ?"<<endl;
         }
         else if (nb==6)
         {
                cout<<"Sais tu danser la carioca ?"<<endl;
         }
         else if (nb>6)
         {
                cout<<"pas de question cette fois-ci."<<endl;
         }

     }
  
      cout<<endl;
      cout<<endl;
      

     if (nb<=6) //declaration de demande reponse ou non
        {
               cout<<"Entre ta reponse a la question :"<<endl;
               cin>>reponse;
               }
        else {
              cout<<"Pas de question, pas de reponse."<<endl;
              }

        
        //declare valeur reponse      
        while (nb<=1) {    
              if (reponse != "4") {
                          cout<<"Reponse fausse."<<endl;
                          }
              else {
                          cout<<"Reponse bonne."<<endl;
                          }

                      }
        
                       while (nb==2) {
              if (reponse != "42") {
                          cout<<"Reponse fausse."<<endl;
                          }
              else {
                          cout<<"Reponse bonne."<<endl;
                          }

                      }
                      
                      while (nb==3) {
              if (reponse != "25") {
                          cout<<"Reponse fausse."<<endl;
                          }
              else {
                          cout<<"Reponse bonne."<<endl;
                          }

                      }
                      while (nb==4) {
              if (reponse != "0") {
                          cout<<"Reponse fausse."<<endl;
                          }
              else {
                          cout<<"Reponse bonne."<<endl;
                          }

                      }
                      while (nb==5) {
              if (reponse != "1.414") {
                          cout<<"Reponse fausse."<<endl;
                          }
              else {
                          cout<<"Reponse bonne."<<endl;
                          }

                      }
                      while (nb==6) {
              if (reponse != "oui") {
                          cout<<"Reponse fausse."<<endl;
                          }
              else {
                          cout<<"Reponse bonne."<<endl;
                          }
                          }




      cout<<endl;
      cout<<endl;
     
     cout<<"Merci d'avoir jouez a ce jeu :)"<<endl;
     
      cout<<endl;
      cout<<endl;
      
      system("PAUSE");  
      return 0;
}


Merci d'avance.

2 réponses

exsit Messages postés 6 Date d'inscription samedi 19 septembre 2009 Statut Membre Dernière intervention 19 septembre 2009 4
19 sept. 2009 à 12:42
Il me semble que tu devrais soit utiliser des IF

soit utiliser un switch

http://www.allprog.com/CPlusPlus/Switch.htm

Un while signifie "tant que", cela veut dire que tant que la condition est vraie, tu vas exécuter ta boucle.

Dans ton programme, tu ne devrais avoir qu'un seul while par exemple.

tant que le joueur n'a pas 10 bonnes réponses justes faire { ton code }
ou tant que le joueur n'a pas tapez Stop. faire { ton code }

Bonne chance
0
gwharl Messages postés 9 Date d'inscription vendredi 18 septembre 2009 Statut Membre Dernière intervention 17 avril 2012
19 sept. 2009 à 15:14
Un ami m'as aidé, il suffisait simplement de mettre des break.
0