Problème de sélection random dans un fichier externe d'une ligne pour un programme console
Bonjour
Je débute en c++ et comme premier exercice je dois réaliser un jeu.
Le jeu consiste à trouver un mot dont les lettres ont été mélangées. Le programme va chercher un mot aléatoirement dans un fichier, mélange les lettres et demande de trouver le mot. La où j'ai un problème c'est dans l'écriture de la fonction est censé aller chercher le mot aléatoirement dans le fichier.
Vous verrez que dans mon code cette section est partiellement faite. Pourriez vous m'aider s'il vous plait? La section à problème commence au string const dico et se termine au return motMystere;. Merci d'avance.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157
|
#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);
}
//On renvoie le mot mélangé
return melange;
}
string const dico("c:/users/dally/documents/visual studio 2015/projects/motmystereseul/dico.txt");
ifstream monflux(dico.c_str()); // je déclare mon flux dans le fichier bibliothèque
if (monflux)
{
//je demande à cette fonction d'aller chercher une ligne du fichier aléatoirement
int i = 0;
int aleatoire = rand() % ;
for (i = 0; i < 323577; i++)
{
aleatoire = rand();
}
getline(monflux, ligne);
motmystere = ligne;
}
else
{
cout << "erreur : impossible d'accéder au fichier." << endl;
}
// je teste que la lecture dans la fichier est bonne
monflux >> motmystere; //je vais chercher un mot dans le fichier
return motMystere; //On renvoie le mot mystere
int main()
{
int essai(5);
string motMystere, motMelange, motUtilisateur;
char rejouer;
//Initialisation des nombres aléatoires
srand(time(0));
do// la boucle pour que le programme reprenne au début
{
motMelange = melangerLettres(motMystere);
for (essai; essai > 0; --essai)
{
cout << "Quel est ce mot? " << motMelange << endl;
cout << "Vous avez " << essai << " essais pour trouver le mot mystere !" << endl;
cin >> motUtilisateur;
if (motUtilisateur == motMystere)
{
cout << endl << "Bravo !! Vous avez trouve le mot! " << endl;
cout << endl << "Vous avez eu besoin de " << (5 - essai) << " essai pour trouver le mot mystere" << endl;
break;
}
else (motUtilisateur != motMystere);
{
cout << endl << "Ce n'est pas la bonne reponse !" << endl;
}
switch (essai)
{
case 5:
cout << endl << "Il ne vous reste que " << essai - 1 << " " << " tentative" << endl;
break;
case 4:
cout << endl << "Il ne vous reste que " << essai - 1 << " " << " tentative" << endl;
break;
case 3:
cout << endl << "Il ne vous reste que " << essai - 1 << " " << " tentative" << endl;
break;
case 2:
cout << endl << "Il ne vous reste que " << essai - 1 << " " << " tentative" << endl;
break;
default:
cout << endl << "La bonne reponse est " << motMystere << endl;
break;
}
}
cout << " Voulez continuer la partie y/n ? " << endl;
cin >> rejouer;
if (rejouer == 'y')
{
cout << " Tres bien ! Faisons une autre partie ! " << endl;
}
else (rejouer == 'n');
{
cout << "au revoir !" << endl;
}
} while (rejouer == 'y'); //On recommence si le joueur veut bien
system("pause");
return 0;
} |