erreur d'incrémentation et de répétition
Boncoir,
Je suis un débutant en langage C++, et j'ai quelques lacunes au niveau de la programmation.
Je veux écrire un algorithme qui peut deviner un nombre entier entre 0 et 1000, en adoptant la méthode de dichotomie.
Voilà l’algorithme :
Code:
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
| #include<stdio.h>
#include<conio.h>
int main(void)
{
int a=0, b=1000, n=500, i=1;
char c;
printf(" Reponds par p si le nombre a deviner est encore plus petit, par g s'il est plus grand et par t si l'algorithme l'a trouve \n" ) ;
printf("Le nombre a deviner vaut 500");
scanf("%c",&c) ;
while(c!='t')
{
switch(c){
case'p':
b=n;
break;
case'g':
a=n;
break;
default:
printf(" Reponds par p si le nombre a deviner est encore plus petit, par g s'il est plus grand et par t si l'algorithme l'a trouve \n" ) ;
break;
}
n=(a+b)/2;
printf("Le nombre a deviner vaut %d",n);
i++;
scanf("%c",&c) ;
}
if (i==1) printf(" j'ai pu trouve ce nombre qui est egale a %d, des le premier essai ",n) ;
else printf(" ,j'ai pu le trouver apres %d essais ",i) ;
getch() ;
} |
Mais lors de l’exécution, il y en a des erreurs.
- à chaque essai, le i s’incrémente deux fois.
- Le message qui doit être affiché quand l’utilisateur tape un caractère différant de ‘p’ et de ‘g’, apparaît à chaque fois.
Code:
1 2 3 4 5 6 7 8 9 10
| Reponds par p si le nombre a deviner est encore plus petit, par g s'il est plus
grand et par t si l'algorithme l'a trouve
Le nombre a deviner vaut 500p
Le nombre a deviner vaut 250 Reponds par p si le nombre a deviner est encore plu
s petit, par g s'il est plus grand et par t si l'algorithme l'a trouve
Le nombre a deviner vaut 250g
Le nombre a deviner vaut 375 Reponds par p si le nombre a deviner est encore plu
s petit, par g s'il est plus grand et par t si l'algorithme l'a trouve
Le nombre a deviner vaut 375t
,j'ai pu le trouver apres 5 essais |
J’ai besoin de votre aide svp.