Partage
  • Partager sur Facebook
  • Partager sur Twitter

Une petite question

sur les %f et %d !

Sujet résolu
    2 décembre 2005 à 21:01:26

    Salut !


    Je suis débutant en C/C++ et j'ai lu le dernier chapitre de Matéo ! (Après les premiers, bien sûr :lol: .)
    Comme je suis un petit malin (oui, je sais, merci, merci) j'ai cherché la petite bête et j'ai fait ça :

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

    int main(int argc, char *argv[])
    {
        double age;
        printf("Quel age avez-vous ?\nTapez votre age puis validez en appuyant sur la touche \"Entree\" !\n");
        scanf("%f", &age);
        printf("Ah ! Vous avez donc %f ans !\n\n", age);
        system("PAUSE");
        return 0;
    }


    Quelqu'un pourrait-il m'expliquer pourquoi quand je tape un nombre à virgule, le programme me renvoit 0.0000EtEncoreZero ?


    J'ai bien mis l'âge entant que double donc il accepte les virgules.
    J'ai bien mis %f dans le scanf comme dans le printf !


    Savez-vous où est l'erreur ?


    Merci

    • Partager sur Facebook
    • Partager sur Twitter
      2 décembre 2005 à 21:06:51

      Tien j'ai modifier ton code...

      Sur le " design " pour mon gout ;)

      et ton erreur était d'avoir mis : %f au lieu de %d

      essaye ton code améliorer...


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

      int main(int argc, char *argv[])
      {
          double age;
          printf("Quel age avez-vous ?\n\nTapez votre age puis validez en appuyant sur la touche \"Entree\" !");
          scanf("%d", &age);
          printf("Ah ! Vous avez donc %d ans !\n\n", age);
          system("PAUSE");
          return 0;
      }
      </span>
      • Partager sur Facebook
      • Partager sur Twitter
        2 décembre 2005 à 21:10:21

        Justement, moi je veux mettre %f pour qu'il m'affiche :

        Citation : C++

        Ah ! Vous avez donc 107.7 ans !


        C'est également pour ça que j'ai mis l'âge en double. :D
        • Partager sur Facebook
        • Partager sur Twitter
          2 décembre 2005 à 21:12:28

          pour restraindre la précision, faut faire %.precisionf dans le printf, comme par exemple:

          printf("%.2f", virgule);


          renvoyera 15.23 par exemple
          • Partager sur Facebook
          • Partager sur Twitter
            2 décembre 2005 à 21:24:00

            Merci c'est ce que je recherchais :) (vachement puissant le moteur de recherche o_O )
            • Partager sur Facebook
            • Partager sur Twitter
              2 décembre 2005 à 21:30:20

              Dsl mais ça ne résout pas mon problème :colere: !

              Voici mon code :

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

              int main(int argc, char *argv[])
              {
                  double age;
                  printf("Quel age avez-vous ?\nTapez votre age puis validez en appuyant sur la touche \"Entree\" !\n");
                  scanf("%f", &age);
                  printf("Ah ! Vous avez donc %.2f ans !\n\n", age);
                  system("PAUSE");
                  return 0;
              }


              Ca m'affiche que j'ai 0.00 ans ! Je note tout de même que le format du nombre est correct mais pas le nombre en lui-même !
              • Partager sur Facebook
              • Partager sur Twitter
                2 décembre 2005 à 21:37:27

                RTFM :)

                Utilise %lf et pas %f dans le scanf, sinon il attend un float et pas un double.
                • Partager sur Facebook
                • Partager sur Twitter
                  2 décembre 2005 à 21:37:39

                  bah pour les doubles c'est :
                  scanf("%lf", &age)
                  tu n'utilises pas le bon format, ça ne risque pas de marcher :p
                  • Partager sur Facebook
                  • Partager sur Twitter
                    2 décembre 2005 à 21:42:27

                    Ok, merci bcp ! Ca marche !
                    PS : vous conviendrez que le coup du lf je ne pouvais pas le deviner tout seul ! Si ? :euh:
                    • Partager sur Facebook
                    • Partager sur Twitter
                      2 décembre 2005 à 21:56:20

                      Non, ça fait partie des choses qu'on trouve en lisant de la doc. :p
                      • Partager sur Facebook
                      • Partager sur Twitter
                        2 décembre 2005 à 22:04:27

                        Je note ça me servira pour plus tard, encore merci :)
                        • Partager sur Facebook
                        • Partager sur Twitter

                        Une petite question

                        × 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