Partage
  • Partager sur Facebook
  • Partager sur Twitter

conersion euro-francs

problèmes de calculs

Sujet résolu
    24 juillet 2006 à 13:37:09

    :p:D bonjour a tous voilà j'ai honteusement pomper un programme dans le forums qui me semblzit interessant car de mon niveau mais malheureusement je n'arrive pas a le faire tourner convenablement voici le progrmme;


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

    double conversion(double euros)
    {
        double francs = 0;
       
        francs = 40.3399 * euros;
        return francs;

    }

    double conversion2(double francs2)
    {
            double euro2= 0;
            euro2=40.3399/francs2;
            return euro2;


    }


    int main(int argc, char *argv[])
    {
            long choix, somme;
            // voici quelques exemples pour présenter le projet
        printf("10 euros = %lfF\n", conversion(10));
        printf("50 euros = %lfF\n", conversion(50));
        printf("100 euros = %lfF\n", conversion(100));
        printf("200 euros = %lfF\n", conversion(200));
            printf("10 francs = %f euro\n", conversion2(10));
            // maintenant le projet en lui même
            printf("***MENU***\n");
            printf("1.convertisseur: euro - francs\n");
            printf("2.convertisseur: francs - euro\n");
            printf("votre choix:\n");
            scanf("%d", &choix);
        // on demande à l'utilisateur de choisir

            switch (choix)
            {
            case (1):
                    printf(" entrez la somme a convertir : \n");
                    scanf("%f", &somme);
            printf(" %lf euro = %lf francs\n",somme, conversion(somme));
                    break;
            case (2):
                    printf(" entrez la somme a convertir: \n");
                    scanf("%lf", &somme);
                    printf(" %lf francs = %f euros\n",somme, conversion2(somme));
                    break;
            default:
           printf("a cause d'une erreure le programme doit stopper\n");
            break;
            }
       
        system("PAUSE");   
        return 0;
    }
    il m'affiche des valeurs incohérente pk.?????????merci de votre aide si précieuse et bon code!!!!! :-°
    • Partager sur Facebook
    • Partager sur Twitter
      24 juillet 2006 à 13:47:50

      Euuu je vais ptetre paraitre con la lol mais pkoi dans la définition des fonction y'a :

       
      double conversion(double euros)
      {
          double francs = 0;
         
          francs = 40.3399 * euros;
          return francs;

      }


      et non pas


      double conversion(double euros)
      {
          double francs = 0;
         
          francs = 6.55957 * euros;
          return francs;

      }


      nan ?


      et pareil pour l'autre definition :

      pourquoi :

       
      double conversion2(double francs2)
      {
              double euro2= 0;
              euro2=40.3399/francs2;
              return euro2;


      }


      au lieu de :

       
      double conversion2(double francs2)
      {
              double euro2= 0;
              euro2=6.55957/francs2;
              return euro2;


      }
      • Partager sur Facebook
      • Partager sur Twitter
        24 juillet 2006 à 13:48:03

        long choix, somme = 0;

        o_O la somme se multiplie ou se divise par 40.3399, elle doit être un double:
        long choix = 0;
                double somme = 0;
        • Partager sur Facebook
        • Partager sur Twitter
          24 juillet 2006 à 14:59:29

          :D bonjour castorus car e fait des conversions en francs belges enfin, voilà j'ai bien mis un double dans somme mais le programme affiche quel que soit le montant 0.000000frs pk...??
          je vous redonne le code un peu corrigé


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

          double conversion(double euros)
          {
              double francs = 0;
             
              francs = 40.3399 * euros;
              return francs;

          }

          double conversion2(double francs2)
          {
                  double euro2= 0;
                  euro2=40.3399/francs2;
                  return euro2;


          }


          int main(int argc, char *argv[])
          {
                  long choix;
                  double somme;
                  // voici quelques exemples pour présenter le projet
              printf("10 euros = %lfF\n", conversion(10));
              printf("50 euros = %lfF\n", conversion(50));
              printf("100 euros = %lfF\n", conversion(100));
              printf("200 euros = %lfF\n", conversion(200));
                  printf("10 francs = %f euro\n", conversion2(10));
                  // maintenant le projet en lui même
                  printf("***MENU***\n");
                  printf("1.convertisseur: euro - francs\n");
                  printf("2.convertisseur: francs - euro\n");
                  printf("votre choix:\n");
                  scanf("%d", &choix);
              // on demande à l'utilisateur de choisir

                  switch (choix)
                  {
                  case (1):
                          printf(" entrez la somme a convertir : \n");
                          scanf("%f", &somme);
                  printf(" %lf euro = %lf francs\n",somme, conversion(somme));
                          break;
                  case (2):
                          printf(" entrez la somme a convertir: \n");
                          scanf("%lf", &somme);
                          printf(" %lf francs = %f euros\n",somme, conversion2(somme));
                          break;
                  default:
                 printf("a cause d'une erreure le programme doit stopper\n");
                  break;
                  }
             
              system("PAUSE");   
              return 0;
          }
          pk? il indique 0.0000000000frs au lieu du montant correct??? une aide salvatrice svpl!!!!!!!!!!!!!!!!!!!! merci chaudement et bon code a tous!!!!!!!!!!!
          • Partager sur Facebook
          • Partager sur Twitter
            24 juillet 2006 à 15:12:49

            ça ne serait pas

            double conversion2(double francs2)
            {
                    double euro2= 0;
                    euro2=francs2/40.3399;
                    return euro2;
            }


            au lieu de

            double conversion2(double francs2)
            {
                    double euro2= 0;
                    euro2=40.3399/francs2;
                    return euro2;
            }


            ^^
            • Partager sur Facebook
            • Partager sur Twitter
              24 juillet 2006 à 15:15:07

              A ok lol^^

              ba voila la source corrigée :





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

              double conversion(double euros)
              {
                  double francs = 0;
                 
                  francs = 40.3399 * euros;
                  return francs;

              }

              double conversion2(double francs2)
              {
                      double euro2= 0;
                      euro2=francs2/40.3399;
                      return euro2;


              }


              int main(int argc, char *argv[])
              {
                      long choix;
                      double somme;
                      // voici quelques exemples pour présenter le projet
                  printf("10 euros = %lfF\n", conversion(10));
                  printf("50 euros = %lfF\n", conversion(50));
                  printf("100 euros = %lfF\n", conversion(100));
                  printf("200 euros = %lfF\n", conversion(200));
                      printf("10 francs = %f euro\n", conversion2(10));
                      // maintenant le projet en lui même
                      printf("***MENU***\n");
                      printf("1.convertisseur: euro - francs\n");
                      printf("2.convertisseur: francs - euro\n");
                      printf("votre choix:\n");
                      scanf("%d", &choix);
                  // on demande à l'utilisateur de choisir

                      switch (choix)
                      {
                      case 1:
                              printf(" entrez la somme a convertir : \n");
                              scanf("%lf", &somme);
                      printf(" %lf euro = %lf francs\n",somme, conversion(somme));
                              break;
                      case 2:
                              printf(" entrez la somme a convertir: \n");
                              scanf("%lf", &somme);
                              printf(" %lf francs = %lf euros\n",somme, conversion2(somme));
                              break;
                      default:
                     printf("a cause d'une erreure le programme doit stopper\n");
                      break;
                      }
                 
                  system("PAUSE");   
                  return 0;
              }



              je te laisse trouver ce qui n'allait pas. ^^

              Indice :
              un double vaux une précision en mémoire de deux float, c'est pour cela qu'on met comme formatage dans printf %lf

              idem pour les int, fonctionnant sur un system 32 bit ils valent en mémoire deux short int, donc long int sur les systemes 32 bits sont des int normaux :
              on met alors pour un int le formatage %ld ou %li . (li comme long int).
              • Partager sur Facebook
              • Partager sur Twitter
                24 juillet 2006 à 15:28:56

                :D:p merci bcp pour la soluce mais je ne vois pas mes erreurs je dois être aveugle j'ai beau regarder je n'y vois aucune différence :-° excuse moi mais pourraits-tu me dire ce qui a de changer par rapport à l'original fautif et le tien qui fonctionne merci beaucoup ca m'aiderait grandement !!!!!! et que le c soit avec toi!!!
                • Partager sur Facebook
                • Partager sur Twitter
                  24 juillet 2006 à 15:34:41

                  Code faux:
                  scanf("%f", &somme);

                  Code juste
                  scanf("%lf", &somme);

                  EDIT :
                  Si tu veux faire %f, tu peux mettre :
                  float somme;
                  • Partager sur Facebook
                  • Partager sur Twitter
                    24 juillet 2006 à 15:40:49

                    ;) merci bcp oussama!!!! bon code a toi! :-°
                    • Partager sur Facebook
                    • Partager sur Twitter

                    conersion euro-francs

                    × 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