Boucle while qui me pose problème en C

ghuilmk Messages postés 40 Statut Membre -  
ghuilmk Messages postés 40 Statut Membre -
Bonjour tout le monde :)

J'ai un petit problème. J'apprends la prog en C depuis quelques temps et j'en arrive aux boucles. Et voilà : J'ai voulu créer un programme différent de l'exemple d'apprentissage, histoire de bien comprendre le truc. Je voulais faire un "Trouve le nombre auquel je pense", et afficher différents messages quand le nombre proposé par l'utilisateur est soit inférieur soit supérieur à ce nombre. Mon problème c'est que dès que je propose une valeur supérieure, une valeur inférieur, puis une valeur inférieure (via scanf), le programme se termine alors que l'utilisateur n'a même pas trouvé ! J'ai ce code, mais je ne trouve pas mon erreur :

#include <stdio.h>
#include <stdlib.h>

int main()
{
int compteur = 10 ;

printf("Trouvez le nombre secret...");
scanf ("%d", &compteur);

while (compteur > 10);
{
printf("Nan ! plus bas...\n\n", compteur);
scanf ("%d", &compteur);
}


while (compteur < 10);
{
printf("Nan ! plus haut...\n\n", compteur);
scanf ("%d", &compteur);
}
if (compteur == 10);
printf("OUAIIIII !!\n");



return 0;
}

2 réponses

JooS Messages postés 2705 Statut Membre 228
 
Ton programme ne peut pas fonctionner correctement ...
1 - Si tu entre un nombre supérieur a 10, il entre dans la première boucle...
2 - Après, si tu entre un nombre inférieur a 10, il sort de la première boucle et entre dans la deuxième...
3 - Alors dans ce cas, si tu entre un nombre supérieur a 10, il va sortir de la deuxième boucle, mais il va pas remonter le programme, il va continuer de lire, donc il trouve rien alors il termine le programme ...
Il remonte le programme seulement dans le cas ou il se trouve dans une boucle, sinon, il continue de lire les lignes de codes en descendant ligne par ligne ...


#include <stdio.h>    

void main() {    
int compteur = 10,x;    

printf("Trouvez le nombre secret...");    
scanf ("%d",&x);    

while (x != compteur ) {    
    if(x > compteur ) printf("Nan ! plus bas que %d\n",x);    
    else if(x < compteur )  printf("Nan ! plus haut que %d\n",x);    

    scanf ("%d",&x);    
}    
printf("Bravo");    

scanf("\n");    
}              


EDIT : x au lieu de compteur
0
ghuilmk Messages postés 40 Statut Membre 1
 
C'est pas ça x)
J'ai trouvé tout seul en attendant :)

Merci quand même pour ta grande aide :)

Tchou,
0
JooS Messages postés 2705 Statut Membre 228
 
Ah bon ... O_o
0
ghuilmk Messages postés 40 Statut Membre 1
 
Il y avait une petite erreur ^^
Je l'ai refait à ma sauce, ça marche niquel, tiens, teste :

#include <stdio.h>
#include <stdlib.h>

int main() {
int compteur = 10, x = 0;

printf("Trouvez le nombre secret...");
scanf ("%d", &x);

while (x != compteur ) {
if(x>compteur ) printf("Nan ! plus bas que %d\n",x);
else if(x< compteur ) printf("Nan ! plus haut que %d\n", x);

scanf ("%d",&x);
}
printf("Bravo");

return 0;
}
0
ghuilmk Messages postés 40 Statut Membre 1
 
Petite embrouille entre "compteur" et "x", rien de grave ;)
0
JooS Messages postés 2705 Statut Membre 228
 
!!!!!!!!!!!!!!! Hmmm wé , tu l'as trouver !!!...o_O

J'ai mis compteur parce que j'ai copier coller ton premier code directement, donc j'ai pas verifier si tu t'es trompé ou pas dans l'affichage des messages :)
En plus j'ai pas tester ...
0
ghuilmk Messages postés 40 Statut Membre 1
 
Mdr'. Merci quand même JooS :)
++
0