Boucles et conditions en C

Résolu/Fermé
Quester4 Messages postés 134 Date d'inscription mercredi 8 février 2012 Statut Membre Dernière intervention 18 juillet 2013 - 29 avril 2012 à 09:21
Quester4 Messages postés 134 Date d'inscription mercredi 8 février 2012 Statut Membre Dernière intervention 18 juillet 2013 - 29 avril 2012 à 09:41
Bonjour, c'est encore moi, je débute.
Je fais un programme console, et j'ai ceci :

do
{
scanf("%d", &niveau);
if (niveau == 1)
{
valeurMAX = 100;
nombreGagnant = (rand() % (valeurMAX - valeurMIN + 1)) + valeurMIN;
printf("Le nombre vient d'etre choisi.\n\nEssayez : ");

do
{
score++;
scanf("%d", &essai);
if (essai < nombreGagnant && essai >= valeurMIN)
printf("C'est plus.\n\n");
else if (essai > nombreGagnant && essai <= valeurMAX)
printf("C'est moins.\n\n");
else if (essai < valeurMIN || essai > valeurMAX)
printf("Ce chiffre n'est pas valide. Entrez en un autre : ");
} while (essai != nombreGagnant);

printf("Vous avez trouve le bon nombre ! Bravo !\n");
printf("Vous avez reussi en %d coups.\n\n", score);
choix = 2;
}

else if (niveau == 2)
compteur = 10, valeurMAX = 100, choix = 1;
else if (niveau == 3)
compteur = 20, valeurMAX = 1000, choix = 1;
else if (niveau == 4)
compteur = 10, valeurMAX = 1000, choix = 1;
else if (niveau == 5)
compteur = 5, valeurMAX = 1000, choix = 1;
else
{ printf("\nCe niveau n'existe pas. Veuillez en entrer un valide : ");
choix = 0; }
} while (choix != 1 || choix != 2);

(Vous avez vu que c'est un jeu du plus ou du moins ;-))
Mon problème, c'est que, à la fin de la boucle do... while principale, la boucle recommence même si "choix" est égal à 1 ou égal à 2. Toutes les variables sont déclarées, et il n'y a aucune erreur ou autre à la compilation. Et donc, je cherche où est l'erreur, ou le "truc" à corriger.

Merci.

1 réponse

Quester4 Messages postés 134 Date d'inscription mercredi 8 février 2012 Statut Membre Dernière intervention 18 juillet 2013 126
29 avril 2012 à 09:41
C'est bon, j'ai trouvé.
En fait, la condition du while était "tant que choix différent de 1 ou différent de 2". Et je crois qu'en fait comme on ne peut pas avoir un et deux à la fois, ça ne finissait jamais. J'ai mis :
while (choix < 1);
Et ça marche.
Merci quand même !
0