honrisse | joko7 a écrit :
Bonjour, je suis étudiant en automation et je dois réaliser un programme "devinette" que je n'arrive pas à terminer,... Si quelqu'un pouvait m'aider ce serait gentil car je ne vois pas ou se trouve mon (mes erreurs) ! Voici l'énoncé et ma resolution :
Réalisez un programme qui demande à l’utilisateur de choisir un nombre compris entre 1 et 8, puis qui parvient à déduire ce nombre à l’aide de trois questions posées à l’utilisateur (la réponse est soit 'o' pour oui, soit 'n' pour non). Voici un exemple d’exécution : Choisissez un nombre entre 1 et 8 Appuyez sur une touche pour continuer... Ce nombre est-il supérieur ou égal à 5 ? (o/n) n Ce nombre est-il supérieur ou égal à 3 ? (o/n) o Ce nombre est-il 3 ? (o/n) n C’est le nombre 4 Et voici ma resolution :
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
char c,d,e,f,g,h,i,j;
printf("\nChoisissez un nombre compris entre 1 et 8." );
printf("\n\nVous avez choisi ? 'o' = oui et 'n' = non : " );
scanf("%c",&c);
if (c=='o')
{
printf("Votre nombre est-il superieur ou egal a 5 ? " );
scanf("%c",&d);
if(d=='o')
{
printf("Votre nombre est%cil superieur ou egal a 7 ? ",45);
scanf("%c",&e);
if(e=='o')
{
printf("Le nombre est il egal a 7 ?" );
scanf("%c",&f);
if(f=='o')
{
printf("Le nombre recherche est donc 7 !" );
}
else if(f=='n')
{
printf("Le nombre recherche est donc 8 !" );
}
}
else if(e=='n')
{
printf("Votre nombre est-il egal a 6 ?" );
scanf("%c",&g);
if(g=='o')
{
printf("Le nombre recherche est donc 6 !" );
}
else if(g=='n')
{
printf("Le nombre recherche est donc 5 !" );
}
}
}
else if(d=='n')
{
printf("Votre nombre est-il superieur ou egal a 3 ?" );
scanf("%c", &h);
if(h=='o')
{
printf("Votre nombre est-il egal a 3 ?" );
scanf("%c",&i);
if(i=='o')
{
printf("Le nombre recherche est donc egal a 3" );
}
else if(i=='n')
{
printf("Le nombre recherche est donc egal a 4" );
}
}
else if(h=='n')
{
printf("Votre nombre est-il egal a 2 ?" );
scanf("%c",&j);
if(j=='o')
{
printf("Le nombre recherche est donc egal a 2 !" );
}
else if(j=='n')
{
printf("Le nombre recherche est donc egal a 1 !" );
}
}
}
}
else if(c=='n')
{
printf("Rejouez plus tard alors, au revoir." );
}
getch();
}
Voila, merci pour votre aide, j'ai réalisé des programmes bien plus difficiles que celui ci mais pourtant je n'arrive pas à trouver mon erreur ! Merci beaucoup pour votre aide, bonne soirée
|
Bonjour,
Le problème vient du fait que l'utilisateur saisit sa réponse puis appuie sur entrée : le premier scanf prend la réponse et le second scanf prend l'appuie sur la touche entrée.
Pour résoudre cela, une façon de faire est d'effacer le buffer d'input avec
Plus d'information : http://stackoverflow.com/questions [...] uffer-in-c (l'usage de scanf est également déconseillé : http://c-faq.com/stdio/scanfprobs.html)
Par exemple :
Code :
- #include <stdio.h>
- #include <stdlib.h>
- #include <conio.h>
- int main()
- {
- char c,d,e,f,g,h,i,j;
- printf("\nChoisissez un nombre compris entre 1 et 8." );
- printf("\n\nVous avez choisi ? 'o' = oui et 'n' = non : " );
- scanf("%c",&c);
- fflush(stdin);
- if (c=='o')
- {
- printf("Votre nombre est-il superieur ou egal a 5 ? " );
- scanf("%c",&d);
- fflush(stdin);
- if(d=='o')
- {
- printf("Votre nombre est%cil superieur ou egal a 7 ? " );
- scanf("%c",&e);
- fflush(stdin);
- if(e=='o')
- {
- printf("Le nombre est il egal a 7 ?" );
- scanf("%c",&f);
- fflush(stdin);
- if(f=='o')
- {
- printf("Le nombre recherche est donc 7 !" );
- }
- else if(f=='n')
- {
- printf("Le nombre recherche est donc 8 !" );
- }
- }
- else if(e=='n')
- {
- printf("Votre nombre est-il egal a 6 ?" );
- scanf("%c",&g);
- fflush(stdin);
- if(g=='o')
- {
- printf("Le nombre recherche est donc 6 !" );
- }
- else if(g=='n')
- {
- printf("Le nombre recherche est donc 5 !" );
- }
- }
- }
- else if(d=='n')
- {
- printf("Votre nombre est-il superieur ou egal a 3 ?" );
- scanf("%c", &h);
- fflush(stdin);
- if(h=='o')
- {
- printf("Votre nombre est-il egal a 3 ?" );
- scanf("%c",&i);
- fflush(stdin);
- if(i=='o')
- {
- printf("Le nombre recherche est donc egal a 3" );
- }
- else if(i=='n')
- {
- printf("Le nombre recherche est donc egal a 4" );
- }
- }
- else if(h=='n')
- {
- printf("Votre nombre est-il egal a 2 ?" );
- scanf("%c",&j);
- fflush(stdin);
- if(j=='o')
- {
- printf("Le nombre recherche est donc egal a 2 !" );
- }
- else if(j=='n')
- {
- printf("Le nombre recherche est donc egal a 1 !" );
- }
- }
- }
- }
- else if(c=='n')
- {
- printf("Rejouez plus tard alors, au revoir." );
- }
- getch();
- }
|
|