Boucle while qui me pose problème en C

Fermé
ghuilmk Messages postés 33 Date d'inscription vendredi 30 octobre 2009 Statut Membre Dernière intervention 3 janvier 2013 - 9 mars 2011 à 17:19
ghuilmk Messages postés 33 Date d'inscription vendredi 30 octobre 2009 Statut Membre Dernière intervention 3 janvier 2013 - 9 mars 2011 à 18:35
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 2468 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
Modifié par JooS le 9/03/2011 à 18:37
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 33 Date d'inscription vendredi 30 octobre 2009 Statut Membre Dernière intervention 3 janvier 2013 1
9 mars 2011 à 18:23
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 2468 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
9 mars 2011 à 18:25
Ah bon ... O_o
0
ghuilmk Messages postés 33 Date d'inscription vendredi 30 octobre 2009 Statut Membre Dernière intervention 3 janvier 2013 1
9 mars 2011 à 18:28
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 33 Date d'inscription vendredi 30 octobre 2009 Statut Membre Dernière intervention 3 janvier 2013 1
9 mars 2011 à 18:29
Petite embrouille entre "compteur" et "x", rien de grave ;)
0
JooS Messages postés 2468 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
Modifié par JooS le 9/03/2011 à 18:34
!!!!!!!!!!!!!!! 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 33 Date d'inscription vendredi 30 octobre 2009 Statut Membre Dernière intervention 3 janvier 2013 1
9 mars 2011 à 18:35
Mdr'. Merci quand même JooS :)
++
0