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 dessai 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(); }
Partager