Partage
  • Partager sur Facebook
  • Partager sur Twitter

probleme de lecture depuis une fichier

le mots mystere partie 3 du tp

12 novembre 2018 à 23:12:30

#include <iostream>
#include <string>
#include <ctime>
#include <cstdlib>
#include <fstream>
using namespace std;
string Dictionnaire()
{
    // On ouvre le fichier qui contient la liste des mots.
    ifstream motsDico("dico.txt");
    if (motsDico)
    {
        int position;
        // La variable nbMots contiendra le nombre de mots à l'intérieur du fichier.
        string a;
        int nbMots(0);
        while (getline(motsDico, a))
        {
                nbMots++;
        }
        // On replace le curseur au début du fichier
        motsDico.seekg(0, ios::beg);
        // la variable "position" contiendra un numéro de ligne aléatoire.
        position = rand() % nbMots;
        // On place le curseur au début de cette ligne
        string b;
        int j;
        while (j < position)
        {
            getline(motsDico, b);
            j++;
        }
        return b;
    }
    else
    {
        cout << endl << "ERREUR : Impossible d'ouvrir le fichier !" << endl;
        exit(1);
    }
}
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 motMystere, motMelange, motUtilisateur;
   char c;
   int nbEssai(5);// Variable du nombre d'essai maximum
   int essaiUser(0); // Essai du joueur (au début zero)
do{
   //Initialisation des nombres aléatoires
   srand(time(0));
// Ouverture du fichier en lecture seule
    ifstream fichier("dico.txt");
    if (!fichier) {
      cout << "ERREUR: Impossible d'ouvrir le fichier en lecture." << endl;
      return 0;
    }
    //1 : Opiocher aléatoirement un mot
    motMystere = Dictionnaire();
   //2 : On récupère le mot avec les lettres mélangées dans motMelange
   motMelange = melangerLettres(motMystere);
   //3 : On demande à l'utilisateur quel est le mot mystère
     do
       {
        cout << endl << "Quel est ce mot ? " << motMelange << endl;
         cin >> motUtilisateur;
          for(;essaiUser<nbEssai && motUtilisateur != motMystere ;essaiUser++)
            // Tant que les essai du joueur ne dépasse pas les essais maximum (a savoir 3), et que le joueur
             // ne donne pas la bonne réponse, alors on ajoute 1 a la variable essaiUser.
{
    if(essaiUser != 0)
    {
    cout << "Ce n'est pas la bonne réponse, il te reste " << nbEssai - essaiUser << endl;
     //Si les essai du joueur sont different de zero, ce qui
// signifie qu'il s'est trompé au moins une fois,
//alors on affiche un message, ainsi que le nombre d'essai restant.
    cin >> motUtilisateur; // On lui donne ensuite la possibilité de donné une autre réponse.
    }
}
         if (motUtilisateur == motMystere)
         {
         cout << "Bravo !" << endl;
         cout << "Souhaitez vous faire une autre partie ? o/n" << endl; // Proposition de réponse (en anglais :/)
         cin >> c;
      }
      else
      {
         cout << "Ce n'est pas le mot !" << endl;
         cout << "Vous avez perdu ! Le mot mystere etait \"" << motMystere << "\"." << endl << "Au revoir ! " << endl;
         exit(1);
      }
   }while (motUtilisateur != motMystere);
   //On recommence tant qu'il n'a pas trouvé
   }while (c=='o');
    return 0;
}
 quel est l erreur dans mon code
  • Partager sur Facebook
  • Partager sur Twitter
13 novembre 2018 à 5:26:47

Bonjour,

Manquement global aux règles

Votre message enfreint beaucoup de règles basiques du forum à tel point qu'il serait fastidieux de les énumérer dans ce message. Je vous invite donc à lire de toute urgence les règles générales du forum ainsi que la Charte de Bonne Conduite et les éventuelles règles additionnelles de la section du forum dans laquelle vous postez, visibles parmi les sujets épinglés lorsqu'il y en a.

Je ferme ce sujet. Me contacter par MP si besoin.

  • Partager sur Facebook
  • Partager sur Twitter