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 :

Jeu du pendu, lettre 'a' apparâit plusieurs fois dans un mot qui n'en contient pas


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 3
    Par défaut Jeu du pendu, lettre 'a' apparâit plusieurs fois dans un mot qui n'en contient pas
    Bonjour, bonsoir.
    Je me suis penché ces derniers temps sur le jeu du pendu pour un petit projet que j'ai à faire avec la fac.
    Je n'ai aucun gros soucis pour le réaliser, néanmoins je rencontre un problème que je n'arrive pas à résoudre. En effet pour faire simple, je rentre le mot à faire deviner, par exemple "Bonjour".
    Ensuite le programme demande une lettre et vérifie si celle ci se trouve dans le mot bonjour. Cela fonctionne parfaitement pour toute les lettres, sauf avec la lettre 'a'. En effet, mon programme trouve 3 occurrences de 'a' dans le mot 'bonjour'. Je ne vois vraiment pas d'où me vient ce problème. Si quelqu'un a une idée, je poste mon code ci-dessous.
    Je précise que le jeu n'est qu'a 3/4 terminé, mais le plus gros y est.
    Merci de votre aide
    Cordialement.
    jeu du pendu :
    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
    #include<iostream>
    #include<stdio.h>
    #include<cstring>
     
    using namespace std;
     
    #define MAX 20
     
    void cacher ()              // Sert à sauter des lignes de sorte a ce que le joueur 2 ne voit pas le mot rentré
    {
        int i;
        for(i=0;i<15;i++);
        {
            cout << "\n" << endl;
        }
    }
     
    void remplir_tableau(char tab[],int n)       //Remplit le tableau solution de traits "_"
    {
        int i;
        for(i=0;i<n;i++)
        {
            tab[i]='_';
        }
    }
     
    void afficher_tableau(char tab[], int n)
    {
        int i;
        for(i=0;i<n;i++)
        {
            cout << tab[i] << " ";
        }
    }
     
    void vider_tableau(char tab[], int n)
    {
    	int i;
        for(i=0;i<n;i++)
        {
            tab[i]=' ';
        }
    }
     
    int main()
    {
       int nb_vie=5,i,correct=0,v,j=0;
       char mot[MAX],lettre,solution[MAX],faux[MAX];
     
     
       cout << "Entrer le mot a deviner :" <<endl;
       cin.getline(mot,MAX);
     
     
       int longueur=strlen(mot);
     
       cacher();
       remplir_tableau(solution,longueur);
       vider_tableau(faux,MAX);
       cout << "Vous commencez avec "<< nb_vie <<" vies\n" << endl;
       afficher_tableau(solution,longueur);
     
       while((nb_vie>0)&&(correct==0))
       {
            cout << "\nEntrer une lettre :" <<endl;
            cin >> lettre;
            v=0;
     
            for (i=0; i<MAX; i++)
            {
                if (mot[i]==lettre)
                {
                    solution[i]=lettre;
                    v++;
    				faux[j]=lettre; 
    				j++;
                }
            }
            if (v==0)
            {
                faux[j]=lettre;
                j++;
                nb_vie--;
                cout << "La lettre demandee n est pas dans le mot, -1 vie" << endl;
            }
            else
            {
                cout << "La lettre demandee apparait " << v << " fois dans le mot" << endl;
            }
            afficher_tableau(solution,longueur);
    		cout << "\nLettres deja proposees :";  
    		afficher_tableau(faux, MAX);
    		cout << "	Nombre de vie restantes:"<< nb_vie << endl;
     
        }
     
    	if (correct==0)
    	{
    		cout << "Vous avez Perdu toute vos vies, fin de la partie" << endl;
    	}
     
     
        return 0;
    }
    Fichiers attachés Fichiers attachés

  2. #2
    Rédacteur/Modérateur


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

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 153
    Billets dans le blog
    4
    Par défaut
    Oh quel joli code en C
    Du bon vieux C en plus avec un int en guise de booléen et tout.

    Bon c'est pas comme si une bonne centaine d'étudiants étaient déjà venus faire résoudre leur pendu sur ce forum.. aide-toi et la recherche t'aidera.

    En tous cas je vois pas ton problème, parce que si je cherche un a dans bonjour, il me dit bien "-1 vie c'est pas dans le mot".
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 3
    Par défaut
    Citation Envoyé par Bousk Voir le message
    Oh quel joli code en C
    Du bon vieux C en plus avec un int en guise de booléen et tout.

    Bon c'est pas comme si une bonne centaine d'étudiants étaient déjà venus faire résoudre leur pendu sur ce forum.. aide-toi et la recherche t'aidera.

    En tous cas je vois pas ton problème, parce que si je cherche un a dans bonjour, il me dit bien "-1 vie c'est pas dans le mot".
    Bonsoir, merci de ta réponse
    Alors en fait le coup des int pour es booleens c'est simplement parce que je n'ai jamais coder en C++ jusqu'à aujourd’hui, mais seulement en C, alors je maitrise pas forcément :/

    Bon en ayant vu ta réponse je me suis dis que le problème venait peut être du compilateur, alors j'ai testé le programme avec un autre et en effet plus de problème avec les a... bizarre
    En tout cas je te remercie de ta réponse Passe de bonne soirée et de bonnes fêtes
    Cordialement

  4. #4
    Expert confirmé
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 599
    Par défaut
    99.9999% sur 100, c'est le développeur qui est défaillant, pas le compilateur.
    Dans une ligne du code il faut remplacer MAX par longueur!

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 3
    Par défaut
    Citation Envoyé par dalfab Voir le message
    99.9999% sur 100, c'est le développeur qui est défaillant, pas le compilateur.
    Dans une ligne du code il faut remplacer MAX par longueur!
    En effet bien vu ! Dans le f1er for du while je parcours le tableau jusqu'a MAX, merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Utiliser exec plusieurs fois dans find
    Par Tex-Twil dans le forum Shell et commandes GNU
    Réponses: 0
    Dernier message: 12/03/2008, 14h49
  2. [XSLT] variable définie plusieurs fois dans la même portée
    Par dhallennem dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 06/02/2008, 15h48
  3. Réponses: 4
    Dernier message: 21/11/2007, 12h19
  4. Sous-requête excutée plusieurs fois dans une requête
    Par sheridan31 dans le forum Oracle
    Réponses: 8
    Dernier message: 03/07/2006, 16h18
  5. Réponses: 2
    Dernier message: 14/06/2006, 08h53

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