Partage
  • Partager sur Facebook
  • Partager sur Twitter

difficulté a réaliser l'activité 1 du cours C++

piocher un mot dans un fichier

    10 octobre 2019 à 16:40:55

    Bonjour je n'arrive pas a terminer mon activiter 1 sur le cours c++ , la partie qui me pose problème est quand je dois piocher un mot aléatoire dans un  fichier.txt . Pouriez vous m'aidez s'il vous plait.

    voici mon code :

    #include <iostream>
    #include <string>
    #include <ctime>
    #include <cstdlib>
    #include<fstream>
    using namespace std;
    
    string melangerLettres(string mot)
        {
              string melange;
              int position(0);
    
              while (mot.size() != 0)
           {
               position = rand() % mot.size();
    
               melange += mot[position];
    
               mot.erase(position,1);
           }
    
              return melange;
         }
    
    
         
    string lireFichier()
    {
       ifstream fichier("C:/prog2/dico/dico.txt");
    
       if(fichier)
       {
            string mot;
        fichier >> mot;
        return mot;
    
           int emplacement(0);
         emplacement = rand() % 20000;
        fichier.seekg(emplacement,ios::beg);
       }
       else
       {
           cout << "ERREUR: Impossible d'ouvrir le fichier en lecture." << endl;
       }
    return 0;
    }
    
    deplace()
    {
    
    }
    
    
    string saut()
    {
           int i(0);
          while(i < 30)
          {
              ++i;
              cout << endl;
          }
    }
    
     int coups(0);
    
     
    int defaite()
      {
    
          ++coups;
          return coups;
      }
    
      
      int scores(6);
      int scoreFinal(0);
    
      
    int calculeScores()
      {
         scoreFinal = scores -= coups;
         return scoreFinal;
      }
    
    
      
    int main()
    { lireFichier();
       string motMystere, motMelange, motUtilisateur, choix, continuer("oui");
        srand(time(0));
    
        lireFichier();
    
         cout << "definissez un mot mystere." << endl;
         cin >> motMystere;
    
         cout << "le mot mystere est" << motMystere << endl;
         saut();
    
    
        motMelange = melangerLettres(motMystere);
        do
        {
    
    
            cout << endl << "quel est ce mot ? " << motMelange << endl;
    
    
            cin >> motUtilisateur;
    
    
    
            if(motUtilisateur == motMystere)
            {
                coups = 0;
                calculeScores();
                cout << "Bravo! votre scores et de " << scoreFinal << endl << "souhaitez vous recommencer, si oui tapez 'oui'" << endl;
                cin >> choix;
    
                 if(choix == continuer)
                 {
    
                     melangerLettres(motMystere);
                     main();
                 }
    
    
            }
            else
            {
    
    
              defaite();
              if(coups < 5)
              {
                  cout << "Ce n'est pas le mot ! il vous avez fait " <<  coups << " tentatives" << endl;
              }
              else
              {
                  calculeScores();
                  cout << "tu as perdu car tu as fais " << coups << " tentatives et ton scores et de "<< scoreFinal<< endl;
              }
    
    
    
    
    
    
            }
    
    
    
           }while(motUtilisateur != motMystere && coups < 5);
             return 0;
    
    
    
    }



    • Partager sur Facebook
    • Partager sur Twitter
      10 octobre 2019 à 17:03:08

      Salut

      Le cours que tu suis est obsolète depuis des années, on utilise pas srand/rand en C++, voici un cours de c++ moderne.

      Le mieux est tout charger dans un std::vector et de piocher au hasard dedans.

      Pour srand/rand, je te laisse ce lien.

      • Partager sur Facebook
      • Partager sur Twitter
        10 octobre 2019 à 17:12:13

        De plus, ta fonction melangerLettre peut s'écrire en une ligne avec les fonctions appropriées de <random>.
        • Partager sur Facebook
        • Partager sur Twitter

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

          10 octobre 2019 à 17:19:54

          Salut,

          Bernard lagoutte a écrit:

          la partie qui me pose problème est quand je dois piocher un mot aléatoire dans un  fichier.txt

          Tout l'exercice quoi :p

          Tu as fait des recherches sur le forum ? c'est un exercice qui pose des problèmes à beaucoup de débutant et a été retourné maintes fois.
          Et heureusement d'ailleurs parce que le cours n'enseigne pas des pratiques correctes sur ce sujet : il gère l'aléatoire avec les fonctions problématiques du C (le header random n'existait pas encore à l'époque de la rédaction du cours) et il suggère de faire des accès disque à chaque fois que tu veux piocher un mot alors que c'est l'opération la plus lente qui soit et que la RAM n'est pas un problème (c'est sur qu'il faut choisir si on préfère cibler la vitesse d'exécution ou la mémoire utilisée mais là le choix et vite fait)

          J'ai pas lu ton code mais juste en scrollant jusqu'à la zone de réponse je peux te dire :
           - indente correctement ton code afin qu'il soit lisible (surtout pour demander de l'aide)
           - n'utilise pas de variable globale, et déclare les au plus proche de leur utilisation

          • Partager sur Facebook
          • Partager sur Twitter
          Dream on, Dream on, Dream until your dream comes true
            10 octobre 2019 à 17:26:48

            Merci beaucoup, pour votre aide et vos conseille romantik et markand. j'irais voir le cours XxAnoth-ChaxX.

            • Partager sur Facebook
            • Partager sur Twitter

            difficulté a réaliser l'activité 1 du cours 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