Partage
  • Partager sur Facebook
  • Partager sur Twitter

TP : le mot mystère

Petit problème dans l'exercice...

    24 novembre 2021 à 21:37:52

    Bonjour/Bonsoir.


    J'ai essayer de faire le Tp : le mot mystere mais j'ai rencontré un problème.

    Déjà je n'ai pas fait exactement ce qui était demander dans le Tp car je ne sais pas

    encore comment le faire, mais j'ai essayé une approche voici ce que j'ai codé :


    #include <iostream>
    #include <string>
    #include <ctime>
    #include <cstdlib>
    #include <fstream>
    
    using namespace std;
    
    string melangerLettres(string mot)
    {
       string melange;
       int position(0);
    
       //Tant qu'on n'a pas extrait toutes les lettres du mot
       while (mot.size() != 0)
       {
          //On choisit un numéro de lettre au hasard dans le mot
          position = rand() % mot.size();
          //On ajoute la lettre dans le mot mélangé
          melange += mot[position];
           //On retire cette lettre du mot mystère
          //Pour ne pas la prendre une deuxième fois
            mot.erase(position, 1);
        }
    
       return melange;
    }
    
    
    
    
    int main()
    {
       string Reponse,dicoMelange,motMystere;
       int essai = 0;
       int essais = 5;
       float score = 0.0;
    
       std::ifstream fichier ("c:/Users/User/Documents/c++/dictionnaire.txt");
    
    
    
    
            //Initialisation des nombres aléatoires
            srand(time(0));
    
    
        do
        {
            //Pioche un mot dans un fichier dictionnaire.
            std::cout <<std::endl;
            std::cout <<"Piocher dans un fichier le mot mystere."<<std::endl;
            std::cout <<std::endl;
    
            std::string ligne;
    
    
            getline(fichier,ligne);
            dicoMelange = melangerLettres(ligne);
    
    
            do
            {
    
    
                    cout << endl << "Quel est ce mot ? " << dicoMelange << endl;
                    cin >> motMystere;
    
                    if (ligne == motMystere)
                    {
                        cout << "Bravo !" << endl;
                    }
                    else
                    {
                        essai ++;
                        essais --;
    
    
                        cout << "Ce n'est pas le mot !" << endl;
                        cout <<"Il vous reste : " << essais <<std::endl;
                    }
    
    
    
            }while (ligne != motMystere && essai != 5 && essais != 0);
    
            if (essais == 0)
            {
                std::cout <<"Le mot Mystere est :" << ligne <<std::endl;
            }
    
    
            //Score du joueur
            score =(5-essai) * 100/5;
            std::cout <<"Votre score est de : " << score <<"%" << std::endl<<std::endl;
    
    
            //On demande au joueur si il veux rejouer.
            std::cout <<"Voulez vous rejouer , Oui ou Non ? " <<std::endl;
            std::cin >> Reponse;
    
            //On réinitialise essai à 0.
            essai = 0;
            essais = 5;
    
        }while (Reponse != "Non" && Reponse != "N" && Reponse != "n" && Reponse != "NON" && Reponse != "No" && Reponse != "NO");
    
        return 0;
    }

    Le programme fonctionne à une chose près. quand je relance le programme pour qu'il rejoue la partie il descend dans la liste des mots dans le

    fichier mais à la troisième lignes, le troisième mot contenu dans mon fichier bug, il met un espace quand il mélange le mot et quand je lui introduit le 

    mot qui est Mystere dans mon fichier il ne le prend pas il détecte cela comme étant une erreur. Donc impossible d'introduire Le troisième mot de

    mon fichier. J'ai essayé plusieurs choses mais cela ne fonctionne pas non plus. (j'ai essayé en me déplacent dans le fichier avec les fonctionnalités

    seekg() et tellg() pour connaître la position mais il me donne des résultats étrange).

    Pouvez vous me dire ou est le problème svp car je ne trouve pas du tout le soucis , pour moi il devrait fonctionner surtout que toute la liste des mots de

    mon fichier qui contient au total 10 mots s'affiche sans problème mise à part le troisième mots.

    Voila je vous remercie de m'avoir lut et vous remercie d'avance pour votre aide.

    Bien à vous.

    Ciel Aigle.




    • Partager sur Facebook
    • Partager sur Twitter
      25 novembre 2021 à 8:13:04

      Salut,

      Le probleme est que tu ne test pas la lecture de ton fichier (lecture ok ? fin de fichier atteinte ect ....).

      Fais-toi une fleur, et commence par charger tout ton fichier dans un tableau (std::vector), ca t'évitera de te trimbaler le fichier tout le long de ton programme, et la gestion n'en sera que plus simple.

      • Partager sur Facebook
      • Partager sur Twitter
        26 novembre 2021 à 4:46:36

        S'il fait moins de 10 essais, ça ne devrait pas poser de problème.
        Il faudrait voir dans le fichier s'il y a un espace ou pas pour le 3ième mot.
        Je n'ai pas compris la logique d'avoir 2 variables pour les essais.
        D'ailleurs, elles devraient être initialisées juste après la lecture.
        On pourrait tester en lisant simplement les lignes et en les affichant précédées d'un apostrophe ou d'un astérisque:
        std::cout << "*" << ligne << "*" << std::endl;
        • Partager sur Facebook
        • Partager sur Twitter

        Le Tout est souvent plus grand que la somme de ses parties.

          29 novembre 2021 à 21:04:42

          !!! Ne Pas Répondre au code car le problème est résolu après recherche sur internet merci.

          Bonsoir Ok merci à vous deux, j'ai encore un peu de difficulté avec les vectors je ne comprends pas encore comment bien mettre cela en application c'est pour cela que j'ai décidé de revoir les débuts du cours avant d'aller plus loin.  d'ailleurs j'ai un autre problème en revoyant le cours mais au niveau des fonctions .. j'ai un message qui me dit canot convert double to double et je ne comprends pas ce que cela veux dire..

          Voici le code en question , pouvez vous m'aider à comprendre cette erreur merci.

          #include <iostream>
          //Fonction qui calcule la moyenne des notes entrer dans le tableau.
          double moyTabFonction(double tabNote[], int tailleTab)
          {
              double moyenne(0.0);
              for (int i(0); i < tailleTab; i++)
              {
                  
                  std::cout <<"Voici la moyenne a partir d'une fonction :"<<std::endl;
                  moyenne += tabNote[i] / tailleTab;
              
              }
          return moyenne;
          }
          int main()
          {
              int const tailleTab(5);
              double tabNote[tailleTab];
              double moy(0.0);
          
              std::cout <<"Veuillez introduire 5 notes dans le tableau."<<std::endl;
          //Introduire les note dans le tableau;
              for (int i(0); i < tailleTab; i++)
              {
                  std::cout <<"Note " << i + 1 <<" : ";
                  std::cin >> tabNote[i];
              }
              std::cout <<std::endl;
          //Affiche les note et calcule leurs moyenne.
              for (int i(0); i < tailleTab; i++)
              {
                  std::cout <<"Voici la note " << i + 1 <<" : " << tabNote[i] << std::endl;
                  moy += tabNote[i] / tailleTab;
              }
          
              std::cout << std::endl;
          //Affiche la moyenne des notes
              std::cout <<"Moyenne des notes : " << moy <<std::endl;
          
              std::cout <<"Test a partir d'une fonction : " <<std::endl<<std::endl;
              
              double resu(0.0);
          //Affiche la moyenne à partir de la fonction
                  resu = moyTabFonction(tabNote[i], tailleTab);
          
              return 0;
          }



          -
          Edité par cielaigle 29 novembre 2021 à 22:41:30

          • Partager sur Facebook
          • Partager sur Twitter
            30 novembre 2021 à 1:04:46

            Bon ....

            Avant qu'il ne soit trop tard:
            Jette le cours d'OC à la poubelle, il ne t'apprendra que des bêtises.

            Prend celui sur zeste de savoir, qui lui au moins, est correcte.

            • Partager sur Facebook
            • Partager sur Twitter
              30 novembre 2021 à 2:47:24

              Et se faire balancer deux problèmes coup sur coup ...
              Dans le second problème, il y a un problème de conception bien avant de penser à le coder en C++ ou autre langage.
              Quand je dis "un", je dirais plutôt "plusieurs"
              Ce n'est pas comme ça que j'ai appris à faire des moyennes.
              Et si le code avait compilé, le PO aurait de belles surprises. «Pourquoi il m'affiche cette ligne tout le temps ...»
              • Partager sur Facebook
              • Partager sur Twitter

              Le Tout est souvent plus grand que la somme de ses parties.

                30 novembre 2021 à 9:14:06

                Ta fonction melangerMot peut s'écrire en deux lignes en suivant un cours moderne de C++>=11.

                Comme dit Deedolith, oublie ce que tu as appris avec ce cours et reprends de zéro.

                • Partager sur Facebook
                • Partager sur Twitter

                git is great because Linus did it, mercurial is better because he didn't.

                  3 décembre 2021 à 23:44:32

                  Deedolith a écrit:

                  Salut,

                  Le probleme est que tu ne test pas la lecture de ton fichier (lecture ok ? fin de fichier atteinte ect ....).

                  Fais-toi une fleur, et commence par charger tout ton fichier dans un tableau (std::vector), ca t'évitera de te trimbaler le fichier tout le long de ton programme, et la gestion n'en sera que plus simple.

                  Bonjour j'ai essayer de mettre le fichier dans un vector comme vous me l'avez conseiller. sauf que je n'arrive pas à faire fonctionner mon programme, j'ai bien réussi à mettre le fichier dans mon vecteur mais je n'arrive pas à piocher les mots par ordre aléatoire. et je n'arrive pas non plus à trouver le nom mystère j'ai essayer de trouver le mot mystère avec dicoMelange il le trouve si je lui met bien le même mot que dicoMelange mais du coup il prend seulement les lettre Mélangée... Je n'arrive pas à faire ce que je veux, pouvez vous m'aider svp merci.


                  Pour tous ceux qui vont me dire de recommencer à zéro sur zeste de savoir car OpenClassroom et obsolète je vous ait entendu, je vais m'y mettre mais avant je veux déjà réussir à coder avec ce que j'ai appris, j'ai été voir sur zeste de savoir j'ai vu quelques différences cependant avant de me lancer avec zeste de savoir, je veux déjà réussir ce code... Après je recommencerais à apprendre sur zeste de savoir si c'est vraiment nécessaire.

                  Je vous remercie de m'avoir lut et vous remercie d'avance pour votre aide.

                  #include <iostream>
                  #include <string>
                  #include <ctime>
                  #include <cstdlib>
                  #include <fstream>
                  #include <vector>
                  
                  using namespace std;
                  
                  string melangerLettres(string mot)
                  {
                     string melange;
                     int position(0);
                  
                     //Tant qu'on n'a pas extrait toutes les lettres du mot
                     while (mot.size() != 0)
                     {
                        //On choisit un numéro de lettre au hasard dans le mot
                        position = rand() % mot.size();
                        //On ajoute la lettre dans le mot mélangé
                        melange += mot[position];
                         //On retire cette lettre du mot mystère
                        //Pour ne pas la prendre une deuxième fois
                          mot.erase(position, 1);
                      }
                  
                     //On renvoie le mot mélangé
                     return melange;
                  }
                  
                  
                  
                  
                  int main()
                  {
                     string Reponse,dicoMelange,motMystere;
                     int essai = 0;
                     int essais = 5;
                     float score = 0.0;
                  
                  
                      std::ifstream Fichier("c:/Users/User/Documents/c++/FichierVectorRecup.txt");
                      std::vector <std::string> tabFichier;
                  
                      //Initialisation des nombres aléatoires
                          srand(time(0));
                  
                      std::string ligne;
                  
                      if (Fichier)
                      {
                  
                          while(getline(Fichier,ligne))
                          {
                  
                              tabFichier.push_back(ligne);
                  
                          }
                      }
                      else
                      {
                          std::cout <<"Erreur."<<std::endl;
                      }
                  
                  
                  
                  
                      do
                      {
                          //Pioche un mot dans un fichier dictionnaire qui ce trouve dans un tableau vector.
                          std::cout <<std::endl;
                          std::cout <<"Pioche dans un fichier le mot mystere."<<std::endl;
                          std::cout <<std::endl;
                  
                          for (int i(0); i < tabFichier.size(); i++)
                          {
                              dicoMelange = melangerLettres(tabFichier[i]);
                          }
                  
                  
                  
                  
                          do
                          {
                  
                  
                                  cout << endl << "Quel est ce mot ? " << dicoMelange << endl;
                                  cin >> motMystere;
                  
                  
                  
                                      if (motMystere == dicoMelange)
                                      {
                                          cout << "Bravo !" << endl;
                                      }
                                      else
                                      {
                                          essai ++;
                                          essais --;
                  
                  
                                          cout << "Ce n'est pas le mot !" << endl;
                                          cout <<"Il vous reste : " << essais <<std::endl;
                                      }
                  
                  
                          }while (dicoMelange != motMystere && essai != 5 && essais != 0);
                  
                          if (essais == 0)
                          {
                              std::cout <<"Le mot Mystere est :" << ligne <<std::endl;
                          }
                  
                  
                          //Score du joueur
                          score =(5-essai) * 100/5;
                          std::cout <<"Votre score est de : " << score <<"%" << std::endl<<std::endl;
                  
                  
                          //On demande au joueur si il veux rejouer.
                          std::cout <<"Voulez vous rejouer , Oui ou Non ? " <<std::endl;
                          std::cin >> Reponse;
                  
                          //On réinitialise essai à 0.
                          essai = 0;
                          essais = 5;
                  
                      }while (Reponse != "Non" && Reponse != "N" && Reponse != "n" && Reponse != "NON" && Reponse != "No" && Reponse != "NO");
                  
                      return 0;
                  }





                  -
                  Edité par cielaigle 3 décembre 2021 à 23:44:59

                  • Partager sur Facebook
                  • Partager sur Twitter
                    4 décembre 2021 à 1:46:41

                    cielaigle a écrit:
                    Bonjour j'ai essayer de mettre le fichier dans un vector comme vous me l'avez conseiller. sauf que je n'arrive pas à faire fonctionner mon programme, j'ai
                    bien réussi à mettre le fichier dans mon vecteur mais je n'arrive pas à piocher les mots par ordre aléatoire.

                    Et peux-tu savoir le nombre d'entrées dans ton vecteur (nombre de mots) ?
                    Dans ta fonction de mélange, tu sais comment trouver la longueur de la chaîne et utiliser rand()
                    Ce sera le même principe.
                    As-tu vérifié que le mélange était correct?
                    Je lis ceci:
                                        if (motMystere == dicoMelange)
                    Tu veux que la personne trouve le mot original? Il faudrait peut-être comparer avec ce mot.
                    • Partager sur Facebook
                    • Partager sur Twitter

                    Le Tout est souvent plus grand que la somme de ses parties.

                      5 décembre 2021 à 11:20:51

                      >Après je recommencerais à apprendre sur zeste de savoir si c'est vraiment nécessaire.

                      C'est vraiment nécessaire.

                      • Partager sur Facebook
                      • Partager sur Twitter
                      Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
                        5 décembre 2021 à 19:16:51

                        Un exemple de comment tu pourrais écrire ta fonction melangerLettres() en C++ après avoir vu le cours sur zeste de savoir:

                        #include  <random>
                        std::random_device  rnddev;                       // pour initialiser aléatoirement le générateur d'aléatoire
                        std::default_random_engine  generateur{rnddev()}; // le générateur d'aléatoire initialisé avec une semence aléatoire
                        
                        string  melangerLettres( string mot ) {
                            std::shuffle( mot.begin(), mot.end(), generateur );  // mélanger toutes les lettres aléatoirement
                            return  mot;
                        }

                        -
                        Edité par Dalfab 5 décembre 2021 à 19:23:50

                        • Partager sur Facebook
                        • Partager sur Twitter

                        En recherche d'emploi.

                          6 décembre 2021 à 19:22:19

                          PierrotLeFou a écrit:

                          cielaigle a écrit:
                          Bonjour j'ai essayer de mettre le fichier dans un vector comme vous me l'avez conseiller. sauf que je n'arrive pas à faire fonctionner mon programme, j'ai
                          bien réussi à mettre le fichier dans mon vecteur mais je n'arrive pas à piocher les mots par ordre aléatoire.

                          Et peux-tu savoir le nombre d'entrées dans ton vecteur (nombre de mots) ?
                          Dans ta fonction de mélange, tu sais comment trouver la longueur de la chaîne et utiliser rand()
                          Ce sera le même principe.
                          As-tu vérifié que le mélange était correct?
                          Je lis ceci:
                                              if (motMystere == dicoMelange)
                          Tu veux que la personne trouve le mot original? Il faudrait peut-être comparer avec ce mot.

                          Bonsoir PierrotLeFou, merci pour votre retour.

                          Oui c'est bien dicoMelange qui pose problème car je lui demande de comparer les lettre mélanger et pas la lettre t'elle qu'elle est, mais le soucis c'est que je n'arrive pas à faire en sorte que sa compare le mot véritable. j'ai essayé plusieurs choses mais je n'y arrive pas, voila pourquoi je sollicite votre aide. 



                          • Partager sur Facebook
                          • Partager sur Twitter
                            6 décembre 2021 à 20:06:57

                            C'est de l'algorithmique de base.

                            Faites cela avec un papier-crayon.

                            Là, vous mélangez chaque mot du dictionnaire et vous prenez le résultat du mélange du dernier mot et vous comparez l'entrée de l'utilisateur au résultat du mélange, c'est complètement illogique.

                            Tirez un nombre entre 0 et "tabFichier.size()", récupérez le nième mot de votre dictionnaire, n étant votre nombre tiré aléatoirement, vous le conservez dans une variable "motADecouvrir". Vous mélangez ce mot "motADecouvrir" et vous affichez le résultat de ce mélange (c'est ce que vous faites déjà).

                            Vous avez à comparer l'entrée de l'utilisateur avec "motADecouvrir", pas avec "dicoMelange"

                            • Partager sur Facebook
                            • Partager sur Twitter
                            Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
                              6 décembre 2021 à 23:10:05

                              bacelar a écrit:

                              C'est de l'algorithmique de base.

                              Faites cela avec un papier-crayon.

                              Là, vous mélangez chaque mot du dictionnaire et vous prenez le résultat du mélange du dernier mot et vous comparez l'entrée de l'utilisateur au résultat du mélange, c'est complètement illogique.

                              Tirez un nombre entre 0 et "tabFichier.size()", récupérez le nième mot de votre dictionnaire, n étant votre nombre tiré aléatoirement, vous le conservez dans une variable "motADecouvrir". Vous mélangez ce mot "motADecouvrir" et vous affichez le résultat de ce mélange (c'est ce que vous faites déjà).

                              Vous avez à comparer l'entrée de l'utilisateur avec "motADecouvrir", pas avec "dicoMelange"

                              Ok merci.



                              • Partager sur Facebook
                              • Partager sur Twitter
                                8 décembre 2021 à 15:12:12

                                Bonjour à tous, j'ai enfin réussi à faire fonctionne mon programme , mais j'ai un petit soucis au niveau des essais je n'arrive pas à bien comprendre pourquoi, ça fait une heure que je cale dessus et ne vois pas ou est le problème.(le soucis c'est qu'il décompte en négatif alors qu'il devrais s'arrêter à 0). J'ai aussi fais quelques modification dans le code de base car j'ai ajouté des difficultés et des fichiers, cependant le codes est répétitif et long mais je ne vois pas comment je pourrais faire pour le raccourcir ... Si vous pouvez m'aider à voir ou est le problème avec les essais ça serai cool, merci et bonne journée à vous.

                                Voici le code :


                                #include <iostream>
                                #include <string>
                                #include <ctime>
                                #include <cstdlib>
                                #include <fstream>
                                #include <vector>
                                
                                using namespace std;
                                
                                string melangerLettres(string mot)
                                {
                                   string melange;
                                   int position(0);
                                
                                   //Tant qu'on n'a pas extrait toutes les lettres du mot
                                   while (mot.size() != 0)
                                   {
                                      //On choisit un numéro de lettre au hasard dans le mot
                                      position = rand() % mot.size();
                                      //On ajoute la lettre dans le mot mélangé
                                      melange += mot[position];
                                       //On retire cette lettre du mot mystère
                                      //Pour ne pas la prendre une deuxième fois
                                        mot.erase(position, 1);
                                    }
                                
                                   //On renvoie le mot mélangé
                                   return melange;
                                }
                                
                                
                                
                                
                                int main()
                                {
                                   string Reponse,dicoMelange,motMystere,choix;
                                   int essai = 0;
                                   int essais = 5;
                                   float score = 0.0;
                                
                                
                                    std::ifstream Facile("c:/Users/User/Documents/c++/Facile.txt");
                                    std::ifstream Moyen("c:/Users/User/Documents/c++/Moyen.txt");
                                    std::ifstream Difficile("c:/Users/User/Documents/c++/Difficile.txt");
                                    std::vector <std::string> fichierFacile;
                                    std::vector <std::string> fichierMoyen;
                                    std::vector <std::string> fichierDifficile;
                                
                                
                                    //Initialisation des nombres aléatoires
                                        srand(time(0));
                                do
                                {
                                //Menu de choix.
                                    std::cout <<"* Menu *"<<std::endl;
                                    std::cout <<"Facile"<<std::endl;
                                    std::cout <<"Moyen"<<std::endl;
                                    std::cout <<"Difficile"<<std::endl<<std::endl;
                                
                                //Demande à l'utilisateur le choix qu'il à fait.
                                
                                    std::cout <<"Choix ? ";
                                    std::cin >> choix;
                                
                                //teste si le fichier est valide et introduit les lignes du fichier dans le vecteur.
                                    std::string ligne;
                                
                                    if (choix == "Facile")
                                    {
                                
                                        while(getline(Facile,ligne))
                                        {
                                
                                            fichierFacile.push_back(ligne);
                                
                                        }
                                
                                        for (int i(0); i < fichierFacile.size(); i++)
                                            {
                                                dicoMelange = melangerLettres(fichierFacile[i]);
                                
                                                do
                                                {
                                
                                
                                                        cout << endl << "Quel est ce mot ? " << dicoMelange << endl;
                                                        cin >> motMystere;
                                
                                
                                
                                
                                                    if (motMystere == fichierFacile[i])
                                                    {
                                                        cout << "Bravo !" << endl;
                                                    }
                                                    else
                                                    {
                                                        essai ++;
                                                        essais --;
                                
                                
                                                        cout << "Ce n'est pas le mot !" << endl;
                                                        cout <<"Il vous reste : " << essais <<std::endl;
                                                    }
                                                    if (essais == 0)
                                                    {
                                                        std::cout <<"Le mot Mystere est :" << fichierFacile[i] <<std::endl;
                                
                                                    }
                                
                                
                                                }while (fichierFacile[i] != motMystere && essai != 5 && essais != 0);
                                            }
                                
                                    }
                                    else if (choix == "Moyen")
                                    {
                                        while(getline(Moyen,ligne))
                                        {
                                
                                            fichierMoyen.push_back(ligne);
                                
                                        }
                                
                                        for (int i(0); i < fichierMoyen.size(); i++)
                                            {
                                                dicoMelange = melangerLettres(fichierMoyen[i]);
                                            do
                                            {
                                
                                
                                                    cout << endl << "Quel est ce mot ? " << dicoMelange << endl;
                                                    cin >> motMystere;
                                
                                
                                
                                
                                                        if (motMystere == fichierMoyen[i])
                                                        {
                                                            cout << "Bravo !" << endl;
                                                        }
                                                        else
                                                        {
                                                            essai ++;
                                                            essais --;
                                
                                
                                                            cout << "Ce n'est pas le mot !" << endl;
                                                            cout <<"Il vous reste : " << essais <<std::endl;
                                                        }
                                
                                                        if (essais == 0)
                                                        {
                                                            std::cout <<"Le mot Mystere est :" << fichierMoyen[i] <<std::endl;
                                                        }
                                
                                
                                                }while (fichierMoyen[i] != motMystere && essai != 5 && essais != 0);
                                            }
                                
                                
                                
                                
                                
                                
                                
                                
                                    }
                                    else if (choix == "Difficile")
                                    {
                                
                                        while(getline(Difficile,ligne))
                                        {
                                
                                            fichierDifficile.push_back(ligne);
                                
                                        }
                                
                                        for (int i(0); i < fichierDifficile.size(); i++)
                                            {
                                                dicoMelange = melangerLettres(fichierDifficile[i]);
                                                do
                                                {
                                
                                
                                                        cout << endl << "Quel est ce mot ? " << dicoMelange << endl;
                                                        cin >> motMystere;
                                
                                
                                
                                
                                                            if (motMystere == fichierDifficile[i])
                                                            {
                                                                cout << "Bravo !" << endl;
                                                            }
                                                            else
                                                            {
                                                                essai ++;
                                                                essais --;
                                
                                
                                                                cout << "Ce n'est pas le mot !" << endl;
                                                                cout <<"Il vous reste : " << essais <<std::endl;
                                                            }
                                
                                                            if (essais == 0)
                                                            {
                                                                std::cout <<"Le mot Mystere est :" << fichierDifficile[i] <<std::endl;
                                                            }
                                
                                
                                                }while (fichierDifficile[i] != motMystere && essai != 5 && essais != 0);
                                            }
                                
                                    }
                                    else
                                    {
                                        std::cout <<"Erreur."<<std::endl;
                                    }
                                
                                
                                    //Score du joueur
                                        score =(5-essai) * 100/5;
                                        std::cout <<"Votre score est de : " << score <<"%" << std::endl<<std::endl;
                                
                                
                                        //On demande au joueur si il veux rejouer.
                                        std::cout <<"Voulez vous rejouer , Oui ou Non ? " <<std::endl;
                                        std::cin >> Reponse;
                                
                                        //On réinitialise essai à 0.
                                        essai = 0;
                                        essais = 5;
                                
                                
                                
                                
                                
                                }while (Reponse != "Non" && Reponse != "N" && Reponse != "n" && Reponse != "NON" && Reponse != "No" && Reponse != "NO");
                                
                                
                                
                                    return 0;
                                }

                                -
                                Edité par cielaigle 8 décembre 2021 à 15:16:41

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  8 décembre 2021 à 15:43:16

                                  Ta fonction melangerLettre peut toujours s'écrire en deux lignes. Lis un cours à jour.

                                  À part ça, ton code est un copy pasta scandaleux. Tu recopie chaque bloc identique pour des difficultés différentes.

                                  -
                                  Edité par markand 8 décembre 2021 à 15:44:20

                                  • Partager sur Facebook
                                  • Partager sur Twitter

                                  git is great because Linus did it, mercurial is better because he didn't.

                                    8 décembre 2021 à 16:14:26

                                    markand a écrit:

                                    Ta fonction melangerLettre peut toujours s'écrire en deux lignes. Lis un cours à jour.

                                    >> je le ferais.

                                    À part ça, ton code est un copy pasta scandaleux. Tu recopie chaque bloc identique pour des difficultés différentes.

                                    >> oui je sais mais je ne sais pas comment le simplifier... (je ne suis qu'un débutant lol).

                                    -
                                    Edité par markand il y a 29 minutes



                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      8 décembre 2021 à 16:25:27

                                      >oui je sais mais je ne sais pas comment le simplifier... (je ne suis qu'un débutant lol).

                                      Les fonctions/procédures sont tes amies.

                                      -
                                      Edité par bacelar 8 décembre 2021 à 16:25:43

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                      Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
                                        8 décembre 2021 à 16:48:11

                                        bacelar a écrit:

                                        >oui je sais mais je ne sais pas comment le simplifier... (je ne suis qu'un débutant lol).

                                        Les fonctions/procédures sont tes amies.

                                        -
                                        Edité par bacelar il y a 21 minutes

                                        Ok merci Bacelar, je suis justement entrain de voir sa...



                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          19 décembre 2021 à 14:47:22

                                          Bonjour à tous voici mon code terminé que je poste pour vous montrer comment j'ai fais pour simplifié et le rendre fonctionnelle.

                                          Bonne journée à vous et merci encore une fois pour vos aides.


                                          #include <iostream>
                                          #include <string>
                                          #include <ctime>
                                          #include <cstdlib>
                                          #include <fstream>
                                          #include <vector>
                                          
                                          using namespace std;
                                          
                                          string melangerLettres(string mot)
                                          {
                                             string melange;
                                             int position(0);
                                          
                                             //Tant qu'on n'a pas extrait toutes les lettres du mot
                                             while (mot.size() != 0)
                                             {
                                                //On choisit un numéro de lettre au hasard dans le mot
                                                position = rand() % mot.size();
                                                //On ajoute la lettre dans le mot mélangé
                                                melange += mot[position];
                                                 //On retire cette lettre du mot mystère
                                                //Pour ne pas la prendre une deuxième fois
                                                  mot.erase(position, 1);
                                              }
                                          
                                             //On renvoie le mot mélangé
                                             return melange;
                                          }
                                          
                                          
                                          
                                          //autre fonction
                                          int Fmelange(std::vector <std::string> fichierFacile)
                                          {
                                             string Reponse,dicoMelange,motMystere,choix;
                                             int essai = 0;
                                             int essais = 5;
                                             float score = 0.0;
                                          
                                             for (int i(0); i < fichierFacile.size(); i++)
                                                      {
                                                          dicoMelange = melangerLettres(fichierFacile[i]);
                                          
                                                          do
                                                          {
                                          
                                          
                                                                  cout << endl << "Quel est ce mot ? " << dicoMelange << endl;
                                                                  cin >> motMystere;
                                          
                                          
                                          
                                          
                                                              if (motMystere == fichierFacile[i])
                                                              {
                                                                  cout << "Bravo !" << endl;
                                          
                                          
                                                                  //score
                                          
                                                                  //Score du joueur
                                                  score =(5-essai) * 100/5;
                                                  std::cout <<"Votre score est de : " << score <<"%" << std::endl<<std::endl;
                                                              }
                                                              else
                                                              {
                                                                  essai ++;
                                                                  essais --;
                                          
                                          
                                                                  cout << "Ce n'est pas le mot !" << endl;
                                                                  cout <<"Il vous reste : " << essais <<std::endl;
                                                              }
                                                              if (essais == 0)
                                                              {
                                                                  std::cout <<"Le mot Mystere est :" << fichierFacile[i] <<std::endl;
                                          
                                                                  //score
                                          
                                                                  //Score du joueur
                                                  score =(5-essai) * 100/5;
                                                  std::cout <<"Votre score est de : " << score <<"%" << std::endl<<std::endl;
                                                                    //On réinitialise essai à 0.
                                                  essai = 0;
                                                  essais = 5;
                                                  break;
                                          
                                                              }
                                          
                                          
                                                          }while (fichierFacile[i] != motMystere && essai != 5 && essais != 0);
                                                      }
                                          
                                              }
                                          
                                          //Fonction main()
                                          
                                          
                                          int main()
                                          {
                                             string Reponse,dicoMelange,motMystere,choix;
                                           //  int essai = 0;
                                             //int essais = 5;
                                             //float score = 0.0;
                                          
                                          
                                              std::ifstream Facile("c:/Users/user/Documents/c++/Facile.txt");
                                              std::ifstream Moyen("c:/Users/User/Documents/c++/Moyen.txt");
                                              std::ifstream Difficile("c:/Users/User/Documents/c++/Difficile.txt");
                                              std::vector <std::string> fichierFacile;
                                              std::vector <std::string> fichierMoyen;
                                              std::vector <std::string> fichierDifficile;
                                          
                                          
                                              //Initialisation des nombres aléatoires
                                                  srand(time(0));
                                          do
                                          {
                                          //Menu de choix.
                                              std::cout <<"* Menu *"<<std::endl;
                                              std::cout <<"Facile"<<std::endl;
                                              std::cout <<"Moyen"<<std::endl;
                                              std::cout <<"Difficile"<<std::endl<<std::endl;
                                          
                                          //Demande à l'utilisateur le choix qu'il à fait.
                                          
                                              std::cout <<"Choix ? ";
                                              std::cin >> choix;
                                          
                                          //teste si le fichier est valide et introduit les lignes du fichier dans le vecteur.
                                              std::string ligne;
                                          
                                              if (choix == "Facile")
                                              {
                                          
                                                  while(getline(Facile,ligne))
                                                  {
                                          
                                                      fichierFacile.push_back(ligne);
                                          
                                                  }
                                                  //appel de la fonction
                                                  Fmelange(fichierFacile);
                                          
                                          
                                          
                                          
                                              }
                                          
                                                  //On demande au joueur si il veux rejouer.
                                                  std::cout <<"Voulez vous rejouer , Oui ou Non ? " <<std::endl;
                                                  std::cin >> Reponse;
                                          
                                                  //On réinitialise essai à 0.
                                               //   essai = 0;
                                             //     essais = 5;
                                          
                                          
                                          
                                          
                                          
                                          }while (Reponse != "Non" && Reponse != "N" && Reponse != "n" && Reponse != "NON" && Reponse != "No" && Reponse != "NO");
                                          
                                          
                                          
                                              return 0;
                                          }
                                          
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            20 décembre 2021 à 8:49:29

                                            • Partager sur Facebook
                                            • Partager sur Twitter

                                            git is great because Linus did it, mercurial is better because he didn't.

                                            TP : le mot mystère

                                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                            • Editeur
                                            • Markdown