Partage
  • Partager sur Facebook
  • Partager sur Twitter

problème dans une boucle

Sujet résolu
    24 juillet 2006 à 23:39:41

    scanf("%lf", &nombreMystere);

        while (nombreMystere != 4.5)
        {
            printf("Faux, recommence\n");
            scanf("%lf", &nombreMystere);
        }


    Voilà ma boucle donc avant j'ai demander te taper un nombre suite à une phrase, puis quand je veux que si la personne se trompe ben il recommence autant de fois grâce à la boucle et que si il gagne du 1er coup il rentre même pas dans la boucle il semble que c'est avec while que sa marche non ?
    Si je doit mettre tout mon code dite-le moi sinon si il y a une erreur dite-là aussi :)
    Merci d'avance pour vos réponses
    • Partager sur Facebook
    • Partager sur Twitter
      25 juillet 2006 à 2:44:42

      Ben dans ton code il n'y a pas d'erreur. Il vaudrait mieux que tu postes ton code entier, l'erreur ne vient pas de là en tout cas...
      • Partager sur Facebook
      • Partager sur Twitter
        25 juillet 2006 à 3:31:08

        je crois que ca vient du typage de ton nombreMystere, et il faut caster en float 4.5

        Secret (cliquez pour afficher)


             float nombreMystere;

             scanf("%f", &nombreMystere);
             while (nombreMystere !=  (float) 4.5)
             {
                printf("Faux, recommence\n");
                scanf("%f", &nombreMystere);
             }

        • Partager sur Facebook
        • Partager sur Twitter
          25 juillet 2006 à 3:56:28

          En considérant que nombreMystere est un double, ça marche...
          C'est pour ça qu'il faut voir le code ;)
          • Partager sur Facebook
          • Partager sur Twitter
            25 juillet 2006 à 7:45:48

            Citation : Frank1010

            scanf("%lf", &nombreMystere);

                while (nombreMystere != 4.5)



            On ne peux pas utiliser == ni != avec les flottants (ce sont des approximations). Soit tu utilises >= ou <= si ça a un sens, soit tu ruses comme ceci :

            #include <float.h>

               while ((nombreMystere - 4.5) >= DBL_EPSILON)

            • Partager sur Facebook
            • Partager sur Twitter
            Music only !
              25 juillet 2006 à 11:31:19

              Ok je suis pas très avancé dans les cours, alors qu'est-ce que float ? et que signifie dbl_epsilon ?
              Bon je vais envoyé mon code entier

              #include <stdio.h>
              #include <stdlib.h>

              int main(int argc, char *argv[])
              {
                  long nombreMystere = 0;

                  printf("Je sui la moitié du triple de 3 qui suis-je\n");

                  scanf("%lf", &nombreMystere);

                  while (nombreMystere != 4.5)
                  {
                      printf("Faux, recommence\n");
                      scanf("%lf", &nombreMystere);
                  }

                  printf("Bravo tu as trouvé le nombre mystère!!!\n");
                system("PAUSE");
                return 0;


              Le problème c'est qu'il passe forcement par la boucle puisque qu'à n'importe quel nombre il met faux recommence!
              Si on pouvait m'éclaircir ?

              • Partager sur Facebook
              • Partager sur Twitter
                25 juillet 2006 à 12:07:03

                peut être que tu devrais plustôt faire (les %lf ne marche pas avec les long (c'est %ld)!)
                double nombreMystere = 0;


                bon ok je réécrit ton code :

                #include <stdio.h>
                #include <stdlib.h>

                int main(int argc, char *argv[])
                {
                    double nombreMystere = 0;

                    printf("Je suis la moitie du triple de 3 qui suis-je\n");

                    scanf("%lf", &nombreMystere);

                    while (nombreMystere != 4.5)
                    {
                        printf("Faux, recommence\n");
                        scanf("%lf", &nombreMystere);
                    }

                    printf("Bravo tu as trouve le nombre mystere!!!\n");
                  system("PAUSE");
                  return 0;
                }


                (ps : je suis avec un s)
                évite aussi les accents !

                voila ! n'oublie pas de mettre que ton sujet est résolue !
                • Partager sur Facebook
                • Partager sur Twitter
                  25 juillet 2006 à 13:05:24

                  J'en reviens pas d'avoir fais une erreur pareil double, long :lol: surement dans la rapidité. Puis pour la faute d'orthographe j'ai tapé trop vite aussi!
                  Merci!!!
                  • Partager sur Facebook
                  • Partager sur Twitter
                    25 juillet 2006 à 16:58:35

                    de rien ! bonne continuation en programmation !
                    • Partager sur Facebook
                    • Partager sur Twitter

                    problème dans 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