Partage
  • Partager sur Facebook
  • Partager sur Twitter

Slalut, problème exo C++

j'ai un problème, je trouve pas mon erreur, pouvez-vous m'aider svp.

Sujet résolu
    19 juillet 2019 à 19:16:43

    Bonjour, je suis le cours de C++ sur openclassrooms et on me demande de faire un tp nombre mystère mais j'ai fais une ou deux erreurs et je ne les trouves pas, celui qui trouve mes erreurs gagnera ma gratitude! Pouvez vous m'aider svp, je vous donne ci-joint mon code et la capture d'écran

    ps : j'appuie sur 2 dans la console.

    #include <iostream>
    #include <string>
    #include <fstream>
    #include <ctime>
    #include <cstdlib>
    
    using namespace std;
    
    
    
    string melange(string motMystere)
    {
        int aleatoire;
        string motMelange;
      while(motMystere.size() != 0)
      {
          aleatoire = rand() % motMystere.size();
          motMelange += motMystere[aleatoire];
          motMystere.erase(aleatoire, 1);
    
      }
      return motMelange;
    }
    
    
    
    
    string chercheDico()
    {
    ifstream dictionnaire("dico/dico.txt");
    
        string motdico;
        int aleatoire;
        aleatoire = rand() % 32000;
    
    
        for(int i; aleatoire != i; i++)
        {
            getline(dictionnaire, motdico);
        }
        dictionnaire.close();
        return motdico;
    
    }
    
    
    
    
    int main()
    {
    srand(time(0));
    
    
    int choixMode, rejouer(1);
    cout << "1=jouer en 2V2 2=jouer tout seul" << endl;
    cin >> choixMode;
    cout << endl;
    
    while(choixMode == 1 && rejouer == 1)
    {
    
    
    string motMystere;
    cout << "saisissez le mot mystere : ";
    cin >> motMystere;
    cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
    
    string motMelange;
    motMelange = melange(motMystere);
    
    
    string reponse;
    do
    {
        cout<< "le mot melange est : " <<motMelange << endl << "saisissez votre reponse : ";
        cin >> reponse;
        cout << endl;
    
        if(reponse != motMystere)
        {
            cout << "reponse incorrecte -_-" << endl << endl;
        }
    }while(reponse != motMystere);
    
    cout << "reponse correcte :-D" << endl << "1=rejouer    autre chiffre=quitter" << endl;
    cin >> rejouer;
    cout << endl << "compris" << endl;
    }
    
    
    while(choixMode == 2 && rejouer == 1)
    {
    ifstream dictionnaire("dico.txt");
    
    if(dictionnaire)
    {
        string motMystere, motMelange;
        motMystere = chercheDico();
        motMelange = melange(motMystere);
    
    
        string reponse;
    do
    {
        cout<< "le mot melange est : " <<motMelange << endl << "saisissez votre reponse : ";
        cin >> reponse;
        cout << endl;
    
        if(reponse != motMystere)
        {
            cout << "reponse incorrecte -_-" << endl << endl;
        }
    }while(reponse != motMystere);
    
    cout << "reponse correcte :-D" << endl << "1=rejouer    autre chiffre=quitter" << endl;
    cin >> rejouer;
    cout << endl << "compris" << endl;
    }
    else
    {
        cout << "il semblerait qu'il y aie un problème de lecture du dictionnaire..." << endl;
    }
    
    
    
    
    
        return 0;
    
    }}



    • Partager sur Facebook
    • Partager sur Twitter
      19 juillet 2019 à 19:20:50

      ''"il semblerait qu'il y aie un problème de lecture du dictionnaire..."''

      Ca ne peut venir que de ces lignes :

      ifstream dictionnaire("dico.txt");
      if(dictionnaire){...}else{ *ton message d'erreur ici* }

      Verifie que ton dico.txt soit acoté de l'executable. Si tu lance a partir de ton IDE , assure toi qu'il soit dans le 'working directory' , sinon pour etre sur tu peux toujours donner le chemin d'acces complet !

      • Partager sur Facebook
      • Partager sur Twitter
        19 juillet 2019 à 20:39:49

        Ligne 30 : 
            ifstream dictionnaire("dico/dico.txt");
        Ligne 93 : 
                ifstream dictionnaire("dico.txt");

        Il est où ton dictionnaire ?

        Aussi tu as un warning ligne 37 : i est utilisé sans être initialisé ! (il faut aussi tenir compte des Warning !)

        • Partager sur Facebook
        • Partager sur Twitter
          19 juillet 2019 à 22:29:03

          Merci pour vos réponses rapides,

          rouloude tu avais raison, déjà j'avais pas mis les mêmes chemins pour ouvrir le fichier mais il y en a un des deux que j'ai supprimé car il servait à rien, et aussi pour la variable i dans la boucle for, il fallait mettre 

          for(int i(o),aleatoire != i, i++)
          
          et pas
          
          for(int i,aleatoire != i, i++)
          

          En tout cas je vous remercie pour votre aide!

          encore merci et bon week-end et bonnes vacances!

          • Partager sur Facebook
          • Partager sur Twitter
            19 juillet 2019 à 22:33:01

            Avec des ";" dans le for à la place des "," si possible
            • Partager sur Facebook
            • Partager sur Twitter
              20 juillet 2019 à 12:11:29

              Ouais, j'avais oublié, ça fait longtemps que j'ai pas programmé, merci.
              • Partager sur Facebook
              • Partager sur Twitter
                20 juillet 2019 à 12:31:15

                Et pas le tutoriel d'OC (parce qu'il est mauvais), mais plutôt celui de Zeste de Savoir ou le cours de gbdivers.

                • Partager sur Facebook
                • Partager sur Twitter
                Tutoriel Ruby - Bon tutoriel C - Tutoriel SDL 2 - Python avancé - Faîtes un zeste, devenez des zesteurs
                  20 juillet 2019 à 16:30:11

                  D'accord, même si c'est dommage... Le site internet d'openclassrooms est mieux, est-ce que ça vaux vraiment le coup de changer?

                  • Partager sur Facebook
                  • Partager sur Twitter
                    20 juillet 2019 à 16:36:48

                    yo@n97one a écrit:

                    Et pas le tutoriel d'OC (parce qu'il est mauvais), mais plutôt celui de Zeste de Savoir ou le cours de gbdivers.

                    Quel rapport avec le sujet ?

                    • Partager sur Facebook
                    • Partager sur Twitter
                      20 juillet 2019 à 16:43:21

                      Pas besoin de rapport, ça se voit qu'il l'utilise, autant le rediriger tous de suite, plutôt que devoir désapprendre 10h de plus, quand il reviendras avec un code Qt du cours qui ne compile pas...

                      @Philibert gentil Oui ça vaut vraiment le coup, le cours apprend des choses dépasser depuis plusieurs années (il utilise la norme C++98, on en est à C++17, bientôt C++20). 

                      Si tu veux des details : https://informaticienzero.github.io/c++-avec-openclassrooms-ou-comment-perdre-son-temps/ et quelques recherches sur le forum te montrerons que continuer avec celui d'OC n'est vraiment pas une bonne idée

                      -
                      Edité par K4kugen 20 juillet 2019 à 16:44:08

                      • Partager sur Facebook
                      • Partager sur Twitter
                        20 juillet 2019 à 18:16:49

                        On le vois sur la moitié des sujets !

                        Alors si on est pas au courant ! C'est à la limite du spam !

                        -
                        Edité par rouloude 20 juillet 2019 à 18:20:32

                        • Partager sur Facebook
                        • Partager sur Twitter
                          20 juillet 2019 à 19:17:31

                          > il utilise la norme C++98, on en est à C++17, bientôt C++20.

                          C++03 je crois, mais pour ce que ça change...

                          @rouloude: je pense que la plupart des personnes ne lisent pas les autres sujets. Ils viennent poser leur question, ne regarde pas les autres sujets puis s'en vont. Pour preuve: les mêmes sujets qui reviennent en boucle.

                          • Partager sur Facebook
                          • Partager sur Twitter
                            20 juillet 2019 à 19:19:57

                            Un débutant ne lit pas la moitié des sujets qui sont poster sur le forum, donc non il ne sont pas forcément au courant (la preuve). Et si quelque chose a la limite du spam peut permettre d'éviter d'apprendre des reliques au profits du langage "moderne", en économisant du temps au passage, c'est peut-être pas si mal ^^

                            Mais c'est sur qu'il vaudrait mieux un sujets épingler en sommet de forum, on peut toujours rêver...

                            Et oublie pas que si toi tu le lis sur le moitié des sujets, d'autre l'écrivent sur cette même moitié, c'est bien que c'est encore utile

                            EDIT : grilled

                            -
                            Edité par K4kugen 20 juillet 2019 à 19:21:22

                            • Partager sur Facebook
                            • Partager sur Twitter
                              20 juillet 2019 à 19:21:51

                              Vu la réponse du PO, il ne semblait pas le savoir. Comme l’a dit @jo_linknoir, beaucoup de gens posent juste leur question mais ne lisent pas les autres sujets.

                              • Partager sur Facebook
                              • Partager sur Twitter
                              Tutoriel Ruby - Bon tutoriel C - Tutoriel SDL 2 - Python avancé - Faîtes un zeste, devenez des zesteurs

                              Slalut, problème exo C++

                              × 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