Partage
  • Partager sur Facebook
  • Partager sur Twitter

[While]Construction d'une boucle

je ne comprends pas mon erreur.

    24 décembre 2005 à 1:41:35

    Bonjour à tous.
    J'ai essayé de voir si un sujet traitait du même probleme, mais je n'ai trouvé aucun cas similaire.

    Je vous montre sans plus attendre mon code c:

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    #include <superconio.h> // bibliotheque permettant d'avoir des couleurs


    void gotoxy(int x, int y)
    {
    COORD c;

    c.X = x - 1;
    c.Y = y - 1;
    SetConsoleCursorPosition (STDOUT, c);
    }

    void couleurTexte(int couleur)
    {
    couleurDeTexte = couleur;
    activerCouleurs();
    }

    void couleurFond(int couleur)
    {
    couleurDeFond = couleur;
    activerCouleurs();
    }

    void activerCouleurs()
    {
    WORD nouveauSet = couleurDeTexte | couleurDeFond;
    SetConsoleTextAttribute(STDOUT, nouveauSet);
    }

    void effacerEcran()
    {
    system("CLS");
    }

    void placerCaractere(int caractere)
    {
    printf("%c", caractere);
    }

    int main(int argc, char *argv[])

    {unsigned long compteur=1,selection=0,nombreEntre;
       
         couleurTexte(JAUNE);
        printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n~");
         couleurTexte(ROUGECLAIR);
        printf("      CHIFFRE A CHERCHER");
         couleurTexte(JAUNE);
        printf("        ~\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n");
         couleurTexte(BLANC);
                 
           getchar();
         couleurTexte(BLANC);
        printf("\nChoisissez le niveau de difficulte");
         couleurTexte(BLEUCLAIR);
        printf("\n\n1:facile\n2:normal\n3:difficile\n\n");
       
       

         while (compteur > 0) //Boucle permettant de refaire choisir
                              //l'utilisateur en cas d'un mauvais choix
         
         {couleurTexte(BLANC);
        scanf("Tappez 1,2 ou 3:%d",&selection);
       
         
          if (selection==1)
           {printf("\n\nMode Facile selectionne\n\n");
            compteur--;}
           
          else if (selection==2)
           {printf("\n\nMode Normal selectionne\n\n");
            compteur--;}
           
          else if (selection==3)
           {printf("\n\nMode Difficile selectionne\n\n");
            compteur--;}
           
          else
           {printf("\n\nMauvais choix, veuillez le refaire\n\n");
            compteur=1;}
           
            getchar();}   
         couleurTexte(BLANC);
                 
      getchar();         
           
      return 0;


    En clair je n'arrive pas à ressortir de la boucle "while" correctement.
    J'explique :Je veux que quand l'utilisateur choisis 1,2 ou 3 une decrementation se fasse pour sortir de la boucle.
    Le probleme c'est que cela ne fonctionne pas.

    Je ne comprends pas mon erreur , pourriez vous m'aidez svp.

    • Partager sur Facebook
    • Partager sur Twitter
      24 décembre 2005 à 7:24:30

      scanf("Tappez 1,2 ou 3:%d",&selection);


      a remplacer par :
      scanf("Tappez 1,2 ou 3:%ld",&selection);


      normalement ca deverait marcher
      • Partager sur Facebook
      • Partager sur Twitter
        24 décembre 2005 à 11:52:17

        Desolé je viens d'essayer sans succés.
        J'ai remarqué que mon programme prend toujours la condition "else", même si j'ai tapé 1,2 ou 3.

        je reécrit aussi le code avec le strict minimum pour pouvoir m'aider.

        #include <stdio.h>
        #include <stdlib.h>
        #include <math.h>
        int main(int argc, char *argv[])

        {unsigned long compteur=1,selection=0,nombreEntre;

         while (compteur > 0) //Boucle permettant de refaire choisir
                                  //l'utilisateur en cas d'un mauvais choix
             
             {
            scanf("Tappez 1,2 ou 3:%ld",&selection);
           
             
              if (selection==1)
               {printf("\n\nMode Facile selectionne\n\n");
                compteur--;}
               
              else if (selection==2)
               {printf("\n\nMode Normal selectionne\n\n");
                compteur--;}
               
              else if (selection==3)
               {printf("\n\nMode Difficile selectionne\n\n");
                compteur--;}
               
              else
               {printf("\n\nMauvais choix, veuillez le refaire\n\n");
                compteur=1;}
               
                getchar();}


        Voila il me trouve jamais les bonnes conditions, mais je vois pas pourquoi. o_O

        PS:Merci quand meme de ton aide ThE.13eSt. :)
        • Partager sur Facebook
        • Partager sur Twitter
          24 décembre 2005 à 11:55:32

          Alors la l'erreur est considérable !

          Citation : ThE.13eSt

          scanf("Tappez 1,2 ou 3:%d",&selection);


          a remplacer par :

          scanf("Tappez 1,2 ou 3:%ld",&selection);


          Si avec ça tu arrives a faire marcher ton code c'est que ton IDE bug ^^

          Non essaye plutot avec ça tu vas voir sa coule de source ^^

          printf("Tappez 1,2 ou 3:");
          scanf("%ld", &selection);


          L'intention de ThE.13eSt était bonne mais pas concrétisée.
          Maintenant cette partie devrait fonctionner (je ne garantis pas que le reste fonctionne car tu utilises des codes que je connais meme pas ^^ )
          Bon voila pour le tuyau, j'espere que tu vas t'en sortir !

          BYE

          • Partager sur Facebook
          • Partager sur Twitter
            24 décembre 2005 à 12:00:43

            fais
            while (compteur > 0)
            {
            printf("Tappez 1,2 ou 3: ");
            scanf("%ld",&selection);

            EDIT : Encore grillé....
            • Partager sur Facebook
            • Partager sur Twitter
              24 décembre 2005 à 12:05:56

              Ah oui merci ça fonctionne.
              J'ai cru avoir vu sur un post du forum quelqu'un mettre une phrase dans le scanf.
              Du coup j'etais persuadé que ça ne viendrais pas de la. :-°
              (faut bien trouver une excuse :lol: ).

              Merci à tous.
              • Partager sur Facebook
              • Partager sur Twitter
                24 décembre 2005 à 12:17:13

                Lol moi aussi j'ai fais exactement pareil que toi mais maintenant je sais que c'est pas possible et j'ai meme étais capable de corriger ton erreur ^^
                Alors la je suis content !

                BYE
                • Partager sur Facebook
                • Partager sur Twitter
                  24 décembre 2005 à 18:24:01

                  Citation : *P.R.Ø.G*


                  printf("Tappez 1,2 ou 3:");
                  scanf("%ld", &selection);



                  L'intention de ThE.13eSt était bonne mais pas concrétisée.
                  Maintenant cette partie devrait fonctionner (je ne garantis pas que le reste fonctionne car tu utilises des codes que je connais meme pas ^^ )
                  Bon voila pour le tuyau, j'espere que tu vas t'en sortir !

                  BYE



                  rohlalala l'idiot j'avais meme pas vu ca^^
                  • Partager sur Facebook
                  • Partager sur Twitter

                  [While]Construction d'une boucle

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown