Partage
  • Partager sur Facebook
  • Partager sur Twitter

Aide avec les nombres décimaux

:(

Sujet résolu
    26 décembre 2005 à 18:55:18

    Bonjour à tous,
    tous est dans le titre, le code ne marche que à moitié car il ne veut pas prendre les nombres décimaux :( après plusieurs testes, je ne suis pas parvenue à bout . Quelqu'un peut m'aider ?
    merci d'avance !

    /* Ce programme permet à l'utilisateur de convertir des kilomètre
    en centimètre par exemple .
    fonctionnement : dès que l'utilisateur entre un nombre et son unitée de mesure,
                   le programme convertie directement ce nombre en mètre(peu importe en quoi ces (litre)...)
                   puis, l'utilisateur entre une autre unitée de mesure qui (en quoi il veut convertir)
                   le programme multiplie ou divise selon les cas pour obtenir le nombre voulu .
                   en faite, on part de l'idée que l'on fait des conversions en partant du centre (mètre, litre ...)

    Créer par antoinexp ;)
    */

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

    int main(int argc, char *argv[])
    { long valeur = 0 , conve1 = 0 ;
      printf("Ce programme a pour but de faire des convertions de puissance ou de nombres decimaux\n\n\n");
      printf("kg | hg | dag | g | dg | cg | mg\n\n");
      printf("kl | hl | dal | l | dl | cl | ml\n\n");
      printf("km | hg | dam | m | dm | cm | mm\n\n");
     
      printf("entrer la valeur") ;
      scanf ("%ld", &valeur);
      printf("\n\n") ;
      printf("cette valeur est des :  \n");
       printf("1.kg \n");
       printf("2.hg \n");
       printf("3.dag \n");
       printf("4.g \n");
       printf("5.dg \n");
       printf("6.cg \n");
       printf("7.mg \n");   
        scanf("%ld", &conve1);
      switch (conve1){
      case 1 : valeur *=  1000 ; break;
      case 2 : valeur *=  100 ; break;
      case 3 : valeur *= 10 ; break;
      case 4 : break;
      case 5 : valeur /=   10  ; break;
      case 6 : valeur /=   100  ; break;
      case 7 : valeur /=   1000  ; break;
      default: printf("erreur, vous navez pas entre un nombre correct ! \1 \n ") ;  system("PAUSE");          return 0;
    }
       printf("\n\n");
         printf("En quoi voulez vous la convertir ? \n") ;
       printf("1.kg \n");
       printf("2.hg \n");
       printf("3.dag \n");
       printf("4.g \n");
       printf("5.dg \n");
       printf("6.cg \n");
       printf("7.mg \n");
       scanf("%ld", &conve1);
      switch (conve1){
      case 1 : valeur /=  1000 ; break;
      case 2 : valeur /=  100 ; break;
      case 3 : valeur /= 10 ; break;
      case 4 : break;
      case 5 : valeur *=   10  ; break;
      case 6 : valeur *=   100  ; break;
      case 7 : valeur *=   1000  ; break;
      default: printf("erreur, vous navez pas entre un nombre correct ! \1 \n ") ;  system("PAUSE");          return 0;
    }
       printf("\n\n")

      printf("resultat : \2 \n%ld\n\n", valeur);
     
      system("PAUSE");     
      return 0;
    }


    • Partager sur Facebook
    • Partager sur Twitter
      26 décembre 2005 à 19:23:05

      Les nombres décimaux doivent être de type double (ou float) et pour récuper et afficher les valeurs il faut utiliser %lf à la place de %ld
      • Partager sur Facebook
      • Partager sur Twitter
        26 décembre 2005 à 20:01:39

        Non, sa ne marche pas chez moi ! :( pourriez-vous réecrire mon code et faire en sorte qu'il marche s'il vous plaît ? ?
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          26 décembre 2005 à 20:47:01

          Et au passage il faut faire des divisons ou multiplications par 1000.0 et pas par 1000 il faut rajouter la virgule car sinon tu as une division par un int donc le résultat est arrondi. Ce qui donne avec plusieurs modifications (j'ai aussi réindenté) :
          /* Ce programme permet à l'utilisateur de convertir des kilomètre
          en centimètre par exemple .
          fonctionnement : dès que l'utilisateur entre un nombre et son unitée de mesure,
                  le programme convertie directement ce nombre en mètre(peu importe en quoi ces (litre)...)
                  puis, l'utilisateur entre une autre unitée de mesure qui (en quoi il veut convertir)
                  le programme multiplie ou divise selon les cas pour obtenir le nombre voulu .
                  en faite, on part de l'idée que l'on fait des conversions en partant du centre (mètre, litre ...)

          Créer par antoinexp ;)
          */

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

          int main(int argc, char *argv[])
          {
                  /* ici la valeur en double */
                  double valeur = 0;
                  int conve1 = 0 ;
                  printf("Ce programme a pour but de faire des convertions de puissance ou de nombres decimaux\n\n\n");
                  printf("kg | hg | dag | g | dg | cg | mg\n\n");
                  printf("kl | hl | dal | l | dl | cl | ml\n\n");
                  printf("km | hg | dam | m | dm | cm | mm\n\n");
           
                  printf("entrer la valeur") ;
                  /* %lf pour des double */
                  scanf ("%lf", &valeur);
                  printf("\n\n") ;
                  printf("cette valeur est des :  \n");
                  printf("1.kg \n");
                  printf("2.hg \n");
                  printf("3.dag \n");
                  printf("4.g \n");
                  printf("5.dg \n");
                  printf("6.cg \n");
                  printf("7.mg \n");
                  /* %d une fois en int */
                  scanf("%d", &conve1);
                  switch (conve1)
                  {
                          /* ajout des .0 */
                          case 1 : valeur *=  1000.0 ; break;
                          case 2 : valeur *=  100.0 ; break;
                          case 3 : valeur *= 10.0 ; break;
                          case 4 : break;
                          case 5 : valeur /=   10.0  ; break;
                          case 6 : valeur /=   100.0  ; break;
                          case 7 : valeur /=   1000.0  ; break;
                          default:
                                  printf("erreur, vous navez pas entre un nombre correct ! \1 \n ");
                                  system("PAUSE");
                                  return 0;
                  }
                  printf("\n\n");
                  printf("En quoi voulez vous la convertir ? \n") ;
                  printf("1.kg \n");
                  printf("2.hg \n");
                  printf("3.dag \n");
                  printf("4.g \n");
                  printf("5.dg \n");
                  printf("6.cg \n");
                  printf("7.mg \n");
                  /* encore un %d */
                  scanf("%d", &conve1);
                  switch (conve1)
                  {
                          /* puis les .0 */
                          case 1 : valeur /=  1000.0 ; break;
                          case 2 : valeur /=  100.0 ; break;
                          case 3 : valeur /= 10.0 ; break;
                          case 4 : break;
                          case 5 : valeur *=   10.0  ; break;
                          case 6 : valeur *=   100.0  ; break;
                          case 7 : valeur *=   1000.0  ; break;
                          default:
                                  printf("erreur, vous navez pas entre un nombre correct ! \1 \n ");
                                  system("PAUSE");
                                  return 0;
                  }
                  printf("\n\n");
                  /* resultat en doubel avec %lf */
                  printf("resultat : \2 \n%lf\n\n", valeur);
           
                  system("PAUSE");     
                  return 0;
          }
          • Partager sur Facebook
          • Partager sur Twitter

          Aide avec les nombres décimaux

          × 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