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 :

Question sur les pointeurs avec les fonctions


Sujet :

C++

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Février 2012
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Question sur les pointeurs avec les fonctions
    Hello !

    J'ai commencer un petit TP pour m'entrainer.

    c'est un petit jeux du MOT mystère.

    j'ai donc découper mon programme en divers fonction,jusque la tout va bien.

    Sauf que quand je lance le jeux et qu'il mélange les lettres du mot entrer par l'utilisateur, il compare pas comme il le faut. C'est a dire que pour lui le joueur gagne que si il tape le mot melanger et non pas si il trouve le mot dans le bonne ordre.(je sais pas comment vous expliquer correctement sa désolé si vous avez du mal a me comprendre).
    screen du probleme : le mot juste est => free


    code main :

    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
    int main()
    {
      int choixRetour;
      int ligne(30);
      int colonne(30);
      string motMystere;
      string  motMelange;
     
     
     
     
     
      choixRetour=menuAcceuil(); //appel de la fonction menu
     
     
      switch(choixRetour)
      {
          case 2:
     
     
     
          cout<<" Joueur 1 Rentre le mot a melanger  "<<endl;
          cout<<endl;
          cin>>motMystere;
     
          tableauCache(ligne, colonne);
     
     
          motMelange = melangerMot(motMystere);
     
          joueurDeux(motMelange);
     
          break;
          return 0;
     
          case 3:
     
          ajouteMOT();//appel de la fonction ajouteMOT
     
          break;
      }
     
     
     
        return 0;
    }
    fonction melangerMOT:

    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
    string melangerMot(string a)
    {
     
        string  melange;
        int position(0);
     
        while(a.size() != 0)
        {
            int position=rand() % a.size();
     
            melange += a[position];
     
            a.erase(position, 1);
        }
     
      return melange;
    }
    fonction joueurDeux:

    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
    void joueurDeux(string mot)
    {
     
        string motUti;
            do
            {
     
            cout<<"\t\t\tJoueur 2 trouver le bonne ordre du mot melanger "<<endl;
            cout<<endl;
            cout<<mot<<endl;
            cout<<endl;
            cin>>motUti;
     
     
             if(mot == motUti)
            {
                cout<<" Good Game ! "<<endl;
            }
            else
            {
                cout<<" se n'est pas le bon ordre ! "<<endl;
            }
     
            }while(mot != motUti);
     
     
     
    }
    je pense qu'il faut que j'utilise des pointeur ou référence mais je ne sais pas comment les utiliser avec les fonctions.

    merci a vos futur éclaircissement

  2. #2
    Membre éclairé
    Avatar de Ekleog
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 448
    Points : 879
    Points
    879
    Par défaut
    Il faudrait également passer à la fonction joueurDeux le mot non mélangé. Sinon, comment peut-elle savoir quand s'arrêter ?

    Au passage, std::random_shuffle permettrait de faire plus facilement et de se masser de melangerMot, en faisant ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #include <algorithm>
    // ...
    string mot = "quelquechose";
    string motMelange = mot;
    std::random_shuffle(motMelange.begin(), motMelange.end());

  3. #3
    Membre éprouvé
    Avatar de mitkl
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2010
    Messages
    364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2010
    Messages : 364
    Points : 1 081
    Points
    1 081
    Par défaut
    Tu as tout simplement un problème de logique dans, tu mélanges ton mot puis tu l'envoies à ta fonction en paramètre, à partir de ce moment là, il est tout à fait normal qu'il t'affiche "Good Game" si ce que tu as entré au clavier correspond à ce que tu as passé en paramètre.

    Il vaut mieux donc faire comme ça :


    On passe le mot saisi par le joueur 1 en paramètre à joueurDeux() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    tableauCache(ligne, colonne);
     
    joueurDeux(motMystere);
     
    break;
    Maintenant qu'on connait le mot saisi par joueur 1 dans la fonction joueurDeux(), on va pouvoir mélanger le mot et comparer le mot de départ avec le mot entré par le joueur 2.
    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
     
    void joueurDeux(string motMystere)
    {
        string motMelange = melangerMOT(motMystere); // modif
        string motUti;
     
            do
            {
     
            cout<<"\t\t\tJoueur 2 trouver le bonne ordre du mot melanger "<<endl;
            cout<<endl;
            cout<<motMelange<<endl; // modif
            cout<<endl;
            cin>>motUti;
     
     
             if(motMystere == motUti) // modif
            {
                cout<<" Good Game ! "<<endl;
            }
            else
            {
                cout<<" se n'est pas le bon ordre ! "<<endl;
            }
     
            }while(motMystere != motUti); // modif
     
     
     
    }
    Si vous ne savez toujours pas ce qu’est la récursivité, relisez cette phrase.

    Mon blog sur la programmation et l'informatique !

Discussions similaires

  1. Premières galères avec les tableaux et les pointeurs
    Par Gargok dans le forum Débuter
    Réponses: 23
    Dernier message: 29/12/2014, 19h29
  2. Réponses: 2
    Dernier message: 20/01/2012, 10h03
  3. Problème avec les pointeurs et les structures
    Par Suefou dans le forum Débuter
    Réponses: 3
    Dernier message: 27/11/2009, 19h07
  4. Réponses: 4
    Dernier message: 23/12/2008, 10h32
  5. Problèmes avec les thread et les pointeurs
    Par raspac dans le forum POSIX
    Réponses: 2
    Dernier message: 22/10/2006, 17h35

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