Salut tout le monde voila j'ai déjà posté mon sujet sur un autre site mais je n'ai pas encore eu de réponse ( enfin si mais pers n'a de réponse a mon problème )

voila je fait un TP du pendu qui est un des exercices proposer sur ce site et mon while ne boucle plus que sur la variable nbEssaie .

j 'utilise une variable que j'ai appelé "boolean" qui me sert de boolean afin de décrémenter ma variable "nbEssai" si la personne n'a pas trouver le bon caractère , sauf que dés que j utilise cette variable ma seconde condition qui vérifie si les chaines de caractères sont égal ne fonctionne plus .
la boucle devrai normalement stopper quand le nombre d’essai arrive a 0 ou que les chaines de caractères dans les deux tableaux sont identiques

pour résume mon while ne fonctionne que si le nombre d’essai arriver a 0 et continu de boucler même si les chaines de caractères sont identiques .

MAIS WHILE fonctionne dés que je retire cette variable "boolean" .

Voila mon code Merci pour votre aide

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 <stdio.h>
#include <stdlib.h>
#include <string.h>
void MyFlush(void);
int main()
{
    int i ;
    int nbEssai = 10;
    int longueurchaine = 10;
    int ChaineIdentique = 1;
    int boolean = 0;
    const char motSecret[10] = "elephant";
    char motSecretcopy[10];
    char lettre;
    char chaine1[longueurchaine] , chaine2[longueurchaine];
 
    /*******************************/
    /** longueurchaine est égal a la taille de la chaine "motSecret" .*/
 
    longueurchaine = strlen(motSecret);
 
    /*******************************/
    /** création d'un tableau d'étoile égale a la longueur de la chaine motSecret .*/
 
    for (i=0; i<longueurchaine; i++)
    {
        motSecretcopy[i]='*';
    }
 
 
    /*******************************/
    printf("\n");
    printf("Bienvenue dans le Pendu\n");
 
 
 
    /*******************************/
    /** tant que le nombre d’essai est inférieur à 0 ou que la chaine de caractère est différente on boucle */
 
    while (nbEssai > 0 && ChaineIdentique!=0  )
 
    {
        printf("\nIl vous reste %d essai \n\n",nbEssai);
        printf("\nEntrer une lettre ! ");
        scanf ("%c",&lettre);
        MyFlush();
 
        boolean=0;
 
        /** boucle qui parcours le tableau */
 
        for (i=0; i<longueurchaine; i++ )
 
        {
            /** Condition qui vérifie si la lettre entrer est égal au tableau a la position "i"
                si oui je copie la lettre entrer dans un autre tableau et je met la variable
                "boolean a a 1 afin de ne pas décrémenter la variable "essaie"   */
 
            if (lettre == motSecret[i])
 
            {
                motSecretcopy[i]=lettre;
                boolean=1;
 
            }
 
        }
        /*******************************/
        /** Boucle qui affiche le tableau */
 
        for (i=0; i<longueurchaine; i++)
        {
            printf("%c",motSecretcopy[i]);
        }
 
        /** La variable " ChaineIdentique " contient la fonction strcmp qui permet de verifier si deux chaine de caractére sont identiques .*/
 
        ChaineIdentique =  strcmp(motSecret, motSecretcopy) ;
 
        /** Condition qui verifie si ma variable " boolean " est égal a 0 si oui la variable " nbEssaie " est décrémenter de 1 */
 
        if ( boolean == 0)
        {
            nbEssai--;
        }
    }
 
 
    /*******************************/
    /** Affichage du tableau  a la fin du grace a une boucle */
 
    printf("\n\n");
    printf("\n");
    for (i=0; i<longueurchaine; i++)
    {
        printf("%c",motSecretcopy[i]);
    }
 
 
    return 0;
}
 
/*******************************/
/** Fonction qui permet de vider le scanf avant de le réutiliser dans une boucle afin d'éviter qui garde en mémoire un caractère */
 
void MyFlush(void)
{
    scanf("%*[^\n]");
    getchar();
}