Hello,
j'ai programmé le jeu du devin mais je me heurte à deux problèmes:
mon programme saute l'instruction getchar et exécute donc 2 fois:
Mais la seconde fois, pas de problème, réponse est lue (et ce, à chaque fois)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 printf("L'ordinateur propose %d.\n", nbOrdi); printf("Ce nombre est-il trop petit, trop grand ou le même que le vôtre?\n"); printf("(p ou P pour \"trop petit\", g ou G pour \"trop grand\", t ou T pour le même)\n");
J'ai aussi un problème avec compteur qui affiche une valeur complètement farfelue (du style 21 alors qu'il n'y a eu que 5 essais, par exemple)
Je vous mets ici mon code (par contre, le programme se déroule jusqu'au bout)
Voyez-vous d'où viennent ces erreurs?
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 #include <stdio.h> #include <stdlib.h> #define N 1000 #define MIN 0 #define MAX 1000 int tab [N]; int nb_pense; void creationTableau(); int nbPense(); void jeu(); int main(void) { creationTableau(); jeu(); return 0; } void creationTableau(){ int i; for (i = 1; i <= 1000; i++){ tab[i] = i; } } int nbPense(){ printf("A quel nombre pensez-vous?\n"); scanf ("%d", &nb_pense); return nb_pense; } void jeu() { nb_pense = nbPense(); int m; int debut = MIN; int fin = MAX; int nbOrdi; char reponse = '!'; int compteur = 1; do { m = (debut + fin) / 2; nbOrdi = tab[m]; printf("L'ordinateur propose %d.\n", nbOrdi); printf("Ce nombre est-il trop petit, trop grand ou le même que le vôtre?\n"); printf("(p ou P pour \"trop petit\", g ou G pour \"trop grand\", t ou T pour le même)\n"); reponse = getchar(); if (reponse != 't' || reponse != 'T') compteur ++; if (reponse == 'p' || reponse == 'P') { debut = m + 1; } else if (reponse == 'g' || reponse == 'G') { fin = m - 1; } else if (reponse == 't' || reponse == 'T') { printf("C'était le bon nombre!\n"); printf("Le nombre a été trouvé en %d essais.\n", compteur); break; } } while (debut <= fin && (reponse != 't' || reponse != 'T')); }
En vous remerciant par avance,
Johnny
Partager