IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C++ Discussion :

Extraire une ligne au hasard d'un fichier .txt


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Profil pro
    Lycéen
    Inscrit en
    Novembre 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2009
    Messages : 67
    Points : 34
    Points
    34
    Par défaut Extraire une ligne au hasard d'un fichier .txt
    Bonjour !

    Voilà, comme le dit le titre, je souhaiterais extraire une ligne d'un fichier .txt.

    je fais donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ifstream motHasard("dico.txt");
     
        if(motHasard)
        {
     
        }
        else
        {
            cout << "Erreur ! bip bip bip";
        }
    Mais je ne sais pas quoi faire apres, je ne connais pas bien les parametre et sur ce que je lit sur google on me dit que sa peut être dangereux pour le programme, j'ai mis srand(time()) au début pour activer les fonctionnalités mais la je bloque, merci d'avance x)

  2. #2
    Membre éclairé

    Homme Profil pro
    Non disponible
    Inscrit en
    Décembre 2012
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Non disponible

    Informations forums :
    Inscription : Décembre 2012
    Messages : 478
    Points : 877
    Points
    877
    Billets dans le blog
    1
    Par défaut
    Rebonjour, cherche premièrement dans la FAQ de la section c++, normalement tu y trouvera tout ! Pour les entrées sorties regarde les flux -> http://cpp.developpez.com/faq/cpp/?page=SL
    je lit sur google on me dit que sa peut être dangereux
    C'est plutôt lire sur google qui est dangereux

  3. #3
    Nouveau membre du Club
    Profil pro
    Lycéen
    Inscrit en
    Novembre 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2009
    Messages : 67
    Points : 34
    Points
    34
    Par défaut
    Resalut :p.

    Je me suis renseigner sur la FAQ hier et j'ai rien vu sur les commande random, j'avoue que je seche, pour extraire une ligne je prend un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    getline (nonduflux, string ligne)
    Mais pour prendre une ligne au pif la, je seche

  4. #4
    Membre éclairé

    Homme Profil pro
    Non disponible
    Inscrit en
    Décembre 2012
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Non disponible

    Informations forums :
    Inscription : Décembre 2012
    Messages : 478
    Points : 877
    Points
    877
    Billets dans le blog
    1
    Par défaut
    Tu peux trouver le nombre de lignes avec la lib <algorithm> (count) mais tu peux aussi le faire de cette manière
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ifstream mem("Score.txt");
    int nbrDeLignes(0);//Nombre de ligne
    char word[80];//Ligne est enregistrée ici
    while(mem.getline(word, 150)) {//A chaque ligne,
       nbrDeLignes++;//augmenter nbr de ligne
    }
    cout<<nbrDeLignes;
    Tu dois trouver comment faire un random pour récupérer une des ligne ! Tu peux le faire !

  5. #5
    Membre chevronné Avatar de Ehonn
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    788
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 788
    Points : 2 160
    Points
    2 160
    Par défaut
    Une ligne ne fait pas forcément moins de 80 caractères...
    Il faut utiliser la fonction std::getline qui travaille avec des std::string (et bannir l'utilisation des char * et des char [] en C++ au profil de std::string).
    http://www.cplusplus.com/reference/s...ne/?kw=getline

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 128
    Points : 33 049
    Points
    33 049
    Billets dans le blog
    4
    Par défaut
    Bonjour,

    le fait est qu'il n'y a aucune notion de ligne dans un fichier en soit. Juste une suite de données.
    Donc il est impossible de définir arbitrairement "je veux récupérer la ligne 8", sans au préalable s'être positioné dans le fichier à l'endroit voulu, et choisir de lire tous les caractères qui suivent cette position jusqu'au prochain \n rencontré : le caractère généralement utilisé pour désigner la fin de ligne.

    Partant de ça, je vois 2 solutions qui sont sensiblement similaires:
    - tu parcours ton fichier entièrement, ligne par ligne
    - tu stockes chaque ligne dans un tableau
    - tu tires un élément au hasard de ce tableau

    ou bien
    - tu parcours ton fichier entièrement, ligne par ligne
    - tu stockes chaque offset du début de ligne dans un tableau
    - tu tires un offset au hasard
    - tu te déplaces dans le fichier à cet offset
    - tu lis le fichier

  7. #7
    Nouveau membre du Club
    Profil pro
    Lycéen
    Inscrit en
    Novembre 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2009
    Messages : 67
    Points : 34
    Points
    34
    Par défaut
    Merci de vos réponses !

    J'ai fais pas mal de recherche sur chaque élément que vous m'avez proposé, et j'avoue que j'ai pas mal de truc a comprendre:

    PilloBuenaGente:
    • Pour la Library <Algorithm>
      Je me suis renseigné sur www.cplusplus.com, et il me liste chacune des fonctions que presente cette librairie, cependant, quand je clique sur une des fonctions (soit count), je ne comprend vraiment pas les exemple qu'il me donne, en fait j'ai l'impression de ne pas être sur du c++.
      Par exemple je vois des std::string ou des stdd partout. ou alors je vois des template, et des truc du genre, et je ne sais pas encore ce que c'est.
      J'ai essayé au feeling mais ca ne fonctionne pas ^^.
    • Dans le code que tu me propose:
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      ifstream mem("Score.txt");
      int nbrDeLignes(0);//Nombre de ligne
      char word[80];//Ligne est enregistrée ici
      while(mem.getline(word, 150)) {//A chaque ligne,
         nbrDeLignes++;//augmenter nbr de ligne
      }
      cout<<nbrDeLignes;
      J'ai appris que "char" permetter de stocké un caractere. Si le nombre de ligne est supérieur a 9, ca va buggé ? Et que signifie les chiffres entre croché ? (word[80]) word est censé être le nom d'une variable non ?
      Et je ne comprend pas le while, est ce qu'il signifie tant que l'on peut prendre des ligne dans le flux mem, et qu'on peut la stocker (la ligne) dans la variable word, mais comment stocker une ligne dans une variable char ? Et que signifie le 150 a coté ?


    Ehonn:
    • Que signifie le std:: ?
    • Quel est la difference entre "char *" et "char []" ?


    Bousk:
    • Je pense prendre la premiere solution car c'est celle que je comprend le mieux, est ce que ce code est un bon début ?
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
       string motDico; // On crée la variable ou on placera les ligne
          ifstream motHasard("dico.txt"); // On crée le flux
       
          if(motHasard) // Si le flux fonctionne
          {
              while(getline(motHasard, motDico)) // Alors tant que l'on peu prendre des ligne dans le flux et les mettre dans la variable motDico
              {
                  vector<string> tableau(motHasard.size()) // On crée un tableau de la taille du flux (j'ai un doute la)
                  tableau.push_back(motDico) // Et on ajoute le contenu de la variable motDico
       
              }
          }
          else
          {
              cout << "Erreur avec le fichier";
          }
    • ou bien
      - tu parcours ton fichier entièrement, ligne par ligne
      - tu stockes chaque offset du début de ligne dans un tableau
      - tu tires un offset au hasard
      - tu te déplaces dans le fichier à cet offset
      - tu lis le fichier
      - Qu'est ce qu'un offset ?
      Et quel méthode me conseille tu ?


    En tout cas je vous remercie chacun de vos réponses, et j'espere avoir été clair dans mes questions, je vous serais infiniment reconaissant (slurp) d'y répondre :pp

  8. #8
    Membre éclairé

    Homme Profil pro
    Non disponible
    Inscrit en
    Décembre 2012
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Non disponible

    Informations forums :
    Inscription : Décembre 2012
    Messages : 478
    Points : 877
    Points
    877
    Billets dans le blog
    1
    Par défaut
    Les std:: s'utilise pour donner accès au librairie cout, string, vector... (Que tu dois inclure en entête).
    Tu utilises le "using namespace std" pour ne pas avoir à reécrire à chaque fois le std::...
    Attention à ne pas mettre "using namespace std" dans tes headers.

    Les crochets permettent de créer des tableaux, char word[80] est un tableau de 80 variables de type char. Le nom est "tableau static".

    Mais comme le dit Ehonn les string sont préférables et bien plus pratiques.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vector<string> tableau(motHasard.size()) // On crée un tableau de la taille du flux (j'ai un doute la)
    Avec la string, pas besoin de préciser la taille. Ça ce fait tout seul !
    Et ton tableau (vector) se réinitialisera a chaque boucle, tu dois l'instancier au début (chargement de tout les mots).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    #include <fstream>
    #include <iostream>
    #include <string>
    #include <vector>
     
    int main(void) {
     
            std::string motDico;
            std::ifstream motHasard("dico.txt");
            std::vector < std::string > tableau;
            if(motHasard)//Les variables instancié entres ces guillemets seront détruits à la sortie
            {
                    while(getline(motHasard, motDico))//ici aussi
                    {
                            tableau.push_back(motDico)
                    }
            }
            else//ici aussi
            {
                    cout << "Erreur avec le fichier";
            }
    }
    Après ça le nombre de ligne ce verifie par le vecteur : motHasard.size()
    (La première méthode fonctionne très bien !)

  9. #9
    Membre éclairé

    Homme Profil pro
    Non disponible
    Inscrit en
    Décembre 2012
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Non disponible

    Informations forums :
    Inscription : Décembre 2012
    Messages : 478
    Points : 877
    Points
    877
    Billets dans le blog
    1
    Par défaut
    Et oui aussi, le getline inscrit dans le string la ligne, puis passe à la ligne suivante, et renvois 0 si il ne reste plus de ligne.

  10. #10
    Nouveau membre du Club
    Profil pro
    Lycéen
    Inscrit en
    Novembre 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2009
    Messages : 67
    Points : 34
    Points
    34
    Par défaut
    Si je comprends bien, si je veux pouvoir utiliser le flux, il faut que je mette TOUT mon programme dans le if(motHasard) ? Sinon tout sera supprimé a l'accolade fermante ?

  11. #11
    Membre éclairé

    Homme Profil pro
    Non disponible
    Inscrit en
    Décembre 2012
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Non disponible

    Informations forums :
    Inscription : Décembre 2012
    Messages : 478
    Points : 877
    Points
    877
    Billets dans le blog
    1
    Par défaut
    Désolé si je m'exprime pas toujours clairement, un exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    int main(void) {
     
            int a( 3 );//int a = 3
     
            if( 1 )//Opération bidon
            {
                    int b( 3 );//int b = 3
            }
     
            a = 1;//ok, instancié dans la même partie
     
            b = 1;//Erreur b n'existe pas
     
            return 0;
    }

  12. #12
    Nouveau membre du Club
    Profil pro
    Lycéen
    Inscrit en
    Novembre 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2009
    Messages : 67
    Points : 34
    Points
    34
    Par défaut
    Donc il faut bien mettre tout le programme dans les accollades, sinon rien ne sera crée. Et desolé si je comprend pas tout, y est tard, mais je cherche depuis des heures, j'ai avancé sur le tutoriel C++ pour apprendre les string les objet et ca m'a assez aidé. Mais pas pour ce que je cherche :pp

  13. #13
    Membre éclairé

    Homme Profil pro
    Non disponible
    Inscrit en
    Décembre 2012
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Non disponible

    Informations forums :
    Inscription : Décembre 2012
    Messages : 478
    Points : 877
    Points
    877
    Billets dans le blog
    1
    Par défaut
    Tout ton programme tiendra dans les accolades du "main", il sera peut être divisé en fonctions, voire bibliothèques.

    il faut que je mette TOUT mon programme dans le if(motHasard)
    Le if(motHasard) renfermera la fonction pour remplir le vecteur créé précédemment.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
            std::vector < std::string > tableau;//Ce vecteur persistera après la fonction if(motHazard)
            std::ifstream motHasard("dico.txt");
            if(motHasard)//Les variables instancié entres ces guillemets seront détruits à la sortie
            {
                    std::string motDico;//en revanche motDico servira seulement à remplir le vecteur, il peut donc être instancier ici
                    while(getline(motHasard, motDico))
                    {
                            tableau.push_back(motDico);//Remplit le vecteur "tableau"
                    }
            }

  14. #14
    Membre chevronné Avatar de Ehonn
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    788
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 788
    Points : 2 160
    Points
    2 160
    Par défaut
    Citation Envoyé par Garwan50 Voir le message
    Ehonn:
    • Que signifie le std:: ?
    • Quel est la difference entre "char *" et "char []" ?
    std est un namespace (espace de nom). std correspond au namespace de la bibiothèque standard du C++. Voici un lien sur la FAQ C++ au sujet des namespace.
    FAQ C++ - Namespace

    La différence entre std et std est assez subtile mais pour faire "simple" :
    char * est un pointeur (une adresse) sur un char (il est aussi possible que cette adresse soit le début d'une succession de char, on peut donc parler d'un tableau de char)
    char[] est un tableau de char (un tableau est aussi une adresse)
    Retiens bien qui faut utiliser std::string dans ce cas et std::vector<T> pour les tableaux en général en C++.
    FAQ C++ - Les chaînes de caractères
    FAQ C++ - std::vector

  15. #15
    Nouveau membre du Club
    Profil pro
    Lycéen
    Inscrit en
    Novembre 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2009
    Messages : 67
    Points : 34
    Points
    34
    Par défaut
    @PilloBuenaGente: D'accord ! Merci :p
    @Ehonn: D'accord merci, mais alors, pourquoi utiliser un pointeur (qui est source de beaucoup de probleme) alors qu'on peut utiliser un tableau de char ?

  16. #16
    Membre chevronné Avatar de Ehonn
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    788
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 788
    Points : 2 160
    Points
    2 160
    Par défaut
    Je ne vois de pointeur dans l'utilisation de std::string
    Pour répondre à ta question: pour déclarer un tableau de char avec une taille non connu à la compilation; ou pour allouer sur le tas plutôt que sur la pile (le tas est (beaucoup) plus grand que la pile). On parle d'allocation dynamique (FAQ C++ - Allocation dynamique). C'est très rarement utile en tant que tel (et si on en a besoin, on encapsule ça dans une classe, comme le fait std::string).

  17. #17
    Nouveau membre du Club
    Profil pro
    Lycéen
    Inscrit en
    Novembre 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2009
    Messages : 67
    Points : 34
    Points
    34
    Par défaut
    Ok je commence a piger :p.

    J'étais en train de crée mon tableau mais j'ai eu un soucis

    In function 'int main()'
    |42|error: 'vector' was not declared in this scope|
    |42|error: expected primary-expression before '>' token|
    |42|error: 'tableau' was not declared in this scope|
    |48|error: 'push_back' was not declared in this scope|
    ||=== Build finished: 4 errors, 0 warnings (0 minutes, 0 seconds) ===|


    En fait j'avais pas mis certaines include
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #include <vector>
    #include <sstream>
    C'est bizarre d'habitude je les met pas


    Sinon j'ai un autre soucis.
    J'ai réussis a stocker le fichier txt dans une variable, et dans un tableau grace a push_back, mais si je fais un cout << tableau; ca ne fonctionne pas.
    Comment selectionnez un mot du tableau ?

  18. #18
    Membre éclairé

    Homme Profil pro
    Non disponible
    Inscrit en
    Décembre 2012
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Non disponible

    Informations forums :
    Inscription : Décembre 2012
    Messages : 478
    Points : 877
    Points
    877
    Billets dans le blog
    1
    Par défaut
    Vecteur, sstream, string, cout, cin, list, map...
    Tout ça c'est la bibliothèque standard, à chaque fois que tu les utilises tu dois en faire l'appel avec "#include<trucStandard>".
    Ils sont répertoriés ici. (a gauche, containers et input/output te seront très utiles).

    Quand tu stockes quelque chose dans un vecteur, ici des strings, tu y accèdes ainsi ( std::string = tableau[CaseDuTableauVoulue]; ) ( un tableau de taille 20 ira de tableau[0] à tableau[19].)

  19. #19
    Nouveau membre du Club
    Profil pro
    Lycéen
    Inscrit en
    Novembre 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2009
    Messages : 67
    Points : 34
    Points
    34
    Par défaut
    Ah ok ! D'accord ah oué ! Impeccable ! Me suffit juste de prendre une case au hasard et voila !

    Plus qu'a trouvé la commande .
    Par contre la je rame un peu. De la ligne 41 a 53, je ne comprends pas ce qui ne va pas, c'est censé afficher une case du tableau entre 0 et 30000 mais ca plante au lancement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    #include <iostream>
    #include <string>
    #include <fstream>
    #include <ctime>
    #include <cstdlib>
    #include <vector>
    #include <sstream>
     
    using namespace std;
     
        string motDonner, motMelange, proposition, reponse; // Variable du mot.
        int const nbEssai(3);
        int essaiUser, score; // Variable du nombre d'essai maximum  // Essai du joueur (au début zero)
     
     
    string MelangerMot(string mot) // Fonction pour melanger le mot
    {
        srand(time(0)); // Activation des fonctionnalité aléatoire
        int pl; // Création de la variable qui contiendras la position des lettres
        string melange; // Variable du mot mélangé
     
     
        while(mot.size() != 0) // Tant que le mot donné contient encore des lettres
        {
            pl = rand() % mot.size(); // On prend une la position d'une lettre au hasard et on l'ajoute dans pl
            melange += mot[pl]; // On l'ajoute a la variable mélange
            mot.erase(pl,1); // Et enfin on supprime la lettre pour ne pas la prendre plusieurs fois
        }
     
        return melange; // Et voila le rendu final
    }
     
    int main()
    {
    essaiUser = 0;
    score = 0;
    do
    {
        //Prise d'un mot au hasard dans le dico.
        //Prise d'un mot au hasard.
        string motDico;
        vector<string> tableau;
        ifstream motHasard("dico.txt");
        if(motHasard)
        {
            while(getline(motHasard, motDico))
            {
                tableau.push_back(motDico);
                srand(time(0)); // Activation des fonctionnalité aléatoire
                int ple = rand() % 30000; // On prend une la position d'une lettre au hasard et on l'ajoute dans pl
                motDonner = tableau[ple]; // On l'ajoute a la variable mélange
            }
        }
        else
        {
            cout << "Erreur avec le fichier";
        }
     
      // Premiere étape.
        cout << "Selection d'un mot automatique !" << endl;
      // Deuxieme étape.
            motMelange = MelangerMot(motDonner); // Application de la fonction dans la variable motmelange a partir du motdonner
     
     
      // Troisieme étape.
     
        cout << "Voici le mot melangé: " << motDonner << endl;
     
    //Tentative
        for(; proposition != motDonner && essaiUser < nbEssai ; essaiUser++)
        {
            if(essaiUser != 0)
            cout << "Vous n'avez pas donne la bonne reponse, il vous reste " << nbEssai - essaiUser << " essai(s)" << endl;
            cin >> proposition;
        }
     
    essaiUser -=1;
    //Demande de recommencer.
        if(proposition == motDonner)
        {
     
            if(essaiUser == 0)
            {
                score += 3;
            }
            else
            {
                score += 1;
            }
            essaiUser = 0;
            motDonner = "NULL";
            proposition = "NULL";
            cout << "Bien joue, vous avez eu un score de " << score << " Souhaitez vous recommencez une partie ?" << endl;
            cin >> reponse;
        }
        else
        {
            cout << "Vous avez perdu, mais vous avez obtenu un score de " << score << " Vous voulez recommencer ?" << endl;
            essaiUser = 0;
            score = 0;
            cin >> reponse;
        }
     
    //Stockage du score
     
     
    }while(reponse == "Oui" || reponse == "oui"); // Si la réponse est oui alors ca continue
     
    return 0;
    }

  20. #20
    Membre éclairé

    Homme Profil pro
    Non disponible
    Inscrit en
    Décembre 2012
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Non disponible

    Informations forums :
    Inscription : Décembre 2012
    Messages : 478
    Points : 877
    Points
    877
    Billets dans le blog
    1
    Par défaut
    Récupère la taille de ton tableau pour connaitre la valeur max à mettre au random, sinon il peut te renvoyer une ligne qui n'existe pas.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [Débutant] Remplacer une ligne bien précise d'un fichier txt
    Par Bastien_Witczak dans le forum VB.NET
    Réponses: 3
    Dernier message: 27/10/2012, 10h36
  2. Réponses: 5
    Dernier message: 07/12/2011, 14h22
  3. [XL-2007] recherche d'une ligne de texte dans un fichier txt
    Par cagelion dans le forum Excel
    Réponses: 5
    Dernier message: 25/09/2010, 19h42
  4. extraire une ligne positionnée dans X fichiers
    Par AlexFred dans le forum Langage
    Réponses: 2
    Dernier message: 18/04/2008, 17h42
  5. Extraire Une Ligne Du Fichier
    Par chakcc dans le forum C
    Réponses: 2
    Dernier message: 16/10/2006, 11h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo