Boucle while ne veut pas bouclé

Résolu
strato-boy Messages postés 831 Statut Membre -  
feadin91 Messages postés 282 Statut Membre -
hello les codeurs! dites, j'ai une boucle qui me pose probleme ... elle veut pas bouclé même quand on demande de bouclé ... tout fonctionne bien sauf le retour au début de la boucle.
et pas moyen de trouvé le problème ... quelqu'un pour m'aider? voila la fautive :
    while(1)
    {
        srand(time(NULL));
        nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
        printf("\n********************\nLE NOMBRE MYSTERE\n********************\n");
        printf("trouvez le nombre mystere ! (entre 1 et 100) \n");
        do
        {
            printf("entrez votre nombre !\n");
            scanf("%d", &choix);
            if (choix < nombreMystere)
            {
                printf("\n plus haut ! plus haut ! \n");
                counter++;
            }
            else if (choix > nombreMystere)
            {
                printf("\nPlus bas ! Plus bas ! \n");
                counter++;
            }
            else
            {
                counter++;
                printf("\n\tBingo !! t'as gagner le gros lot ! felicitation!\n il t'auras fallu %d coups pour trouver.\n", counter);
            }
        }while (choix != nombreMystere);
    puts("Autre partie ? ( o ou n ) ?");
    do
    {
        ch = getchar();
    } while (ch != 'n' && ch != 'o');
    if (ch == 'n' )
        break;
    }

normalement la boucle devrait reprendre si l'utilisateur rentre o ... mais sa veut pas ... merci a tout ceux qui pourront m'aidé


1 réponse

perlenoir Messages postés 1770 Statut Membre 139
 
le break a la fin tu a essayer de le mettre entre accolades

{break;}

juste pour qu'il sache qu'il appartien au if et qu'il ne s'execute pas d'office.

a ce que j'ai compris le pb c'est le "while(1)" qui fonctionne jamais ?
0
strato-boy Messages postés 831 Statut Membre 101
 
oui voila, jvai le mettre entre accolade, mais bon, je pense ecrit comme sa sa aurait du passer non ?
0
strato-boy Messages postés 831 Statut Membre 101
 
sa a réglé le probleme on dirait ... mais s'a m'étonne que mon ecriture n'ait pas était accepté ...
m'enfin merci de ton aide. sa marche et c'est le plus important.
0
Utilisateur anonyme
 
Ben oui. Faut pas oublier la bonne structure de la condition.

if (ch == 'n' ) { 
        break; 
}


Qui va donc être égale à :

if (ch == 'n' ) {break;}


Mais c'est beaucoup plus moche ...
Surtout ne pas oublier les accolades quand on fait une condition.
0
perlenoir Messages postés 1770 Statut Membre 139
 
if (ch == 'n' )
break;

sa ne marchait pas, mais si tu l'avais mise comme sa.

if (ch == 'n' ) break;

sur la même ligne sa devrai marcher

je croi que le compilateur a compri

1- si (truc est vrai) ben il y a rien donc fou rien dans les deux cas

2 -break; arrête tout indépendamment du si

et avec les accolades il comprend que c'est la suite du if
0
feadin91 Messages postés 282 Statut Membre 89
 
L'astuce, c'est que dans différents langages de programmation (le C# par exemple) l'instruction suivant un If est forcément rattachée à elle si il n'y a pas d'accolades... Uniquement si une seule instruction bien entendu.

if (condition)
                  break;

aurait été perçue de la même façon que
if (condition) { break; }


Enfin bref... Bienvenue dans l'aspect strict du langage C ;)
0