Boucle while ne veut pas bouclé

Résolu
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é



--
quand on voit se que font les pigeons on est heureux que les vaches n'aient pas d'ailes ! 

1 réponse

  1. 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
    1. oui voila, jvai le mettre entre accolade, mais bon, je pense ecrit comme sa sa aurait du passer non ?
      0
    2. 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
    3. 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
    4. 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
    5. 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