Programme C probleme

jason-live Messages postés 219 Date d'inscription   Statut Membre -  
Pilow Messages postés 410 Statut Membre -
Bonjour,
voici mon mini programme :

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

int main()
{
int nombreEnMillimetre, nombreEnCentimetre = 0 ;
printf("***** BIENVENUE DANS CE MINI PROGRAMME DE CONVERSION *****\n\n");
printf (" Entrez un nombre avec unite le millimetre pour le convertir en centimetre \n\n");
scanf ("%d", &nombreEnMillimetre);
nombreEnCentimetre = nombreEnMillimetre * 10;
printf ("%d millimetre est egal a %d centimetre \n\n", nombreEnMillimetre, nombreEnCentimetre);
system ("PAUSE");
return 0;
}

quand je fais 10 millimetre sa me dit 10 millimetre est egal a 100 centimetre
il ya un probleme, comment pourais-je faire pour avoir une vrai conversion???????
Configuration: Windows Vista
Firefox 3.5.3

59 réponses

  • 1
  • 2
  • 3
Résumé de la discussion

Le problème est une conversion millimètres vers centimètres mal implémentée dans le programme, qui multiplie le nombre de millimètres par 10 au lieu de le diviser par 10. Des solutions essentielles consistent à remplacer la multiplication par une division par 10 et à utiliser un type flottant pour préserver les décimales lorsque l’on convertit, par exemple mm / 10.0. En cas d'utilisation d'entiers, la division tronque le résultat; il est préférable d'utiliser le type double et d'imprimer avec %f (par exemple nombreEnMillimetre / 10.0) pour obtenir une valeur en centimètres fiable. Enfin, des échanges mentionnent l'emploi éventuel de la fonction round() via la bibliothèque math.h pour arrondir le résultat et affiner l'affichage en centimètres.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. swoog42 Messages postés 1178 Statut Membre 245
     
    nombreEnCentimetre = nombreEnMillimetre * 10;
    FAUX...

    nombreEnCentimetre = nombreEnMillimetre / 10;
    0
  2. scaravenger Messages postés 2691 Date d'inscription   Statut Membre Dernière intervention   625
     
    essaye plutot ca:
    nombreEnCentimetre = nombreEnMillimetre /10;

    Mais tu risque de rencontrer des problèmes d'arrondis.
    Les nombres en virgulle flottante seraient plus appropriés.
    0
  3. swoog42 Messages postés 1178 Statut Membre 245
     
    Le seul problème, c'est qu'il n'aura aucun arrondi, uniquement la partie entière de NombreenCentimètre.
    Il faut passer ta variable de int en float. Pense à changer les conversions dans tes printf.
    0
  4. jason-live Messages postés 219 Date d'inscription   Statut Membre 35
     
    ok merci pour tout les gens =)
    ça veut dire que de millimetre on veut passer par les unité vers la droite il faut diviser par 10 a chaque fois ?
    et aussi par exemple je tape 93 et ca me met 93.000000 millimetre est egal a 9.300000 centimetre ;;; comment je fais pour réduire le nombre de zéro ?

    voici mon code :
    #include <stdio.h>
    #include <stdlib.h>

    int main()
    {
    float nombreEnMillimetre, nombreEnCentimetre = 0 ;
    printf("***** BIENVENUE DANS CE MINI PROGRAMME DE CONVERSION *****\n\n");
    printf (" Entrez un nombre avec unite le millimetre pour le convertir en centimetre \n\n");
    scanf ("%f", &nombreEnMillimetre);
    nombreEnCentimetre = nombreEnMillimetre / 10;
    printf ("%f millimetre est egal a %f centimetre \n\n", nombreEnMillimetre, nombreEnCentimetre);
    system ("PAUSE");
    return 0;
    }
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. swoog42 Messages postés 1178 Statut Membre 245
     
    va voir du coté de la fonction round(), bibliotheque math.h il me semble
    0
  7. jason-live Messages postés 219 Date d'inscription   Statut Membre 35
     
    ok merci bon je vais en rester là avec les fonction round je reste a la fonction normal de départ merci beaucoup ;)
    0
  8. swoog42 Messages postés 1178 Statut Membre 245
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>

    int main()
    {
    float nombreEnMillimetre, nombreEnCentimetre = 0 ;
    printf("***** BIENVENUE DANS CE MINI PROGRAMME DE CONVERSION *****\n\n");
    printf (" Entrez un nombre avec unite le millimetre pour le convertir en centimetre \n\n");
    scanf ("%f", &nombreEnMillimetre);
    nombreEnCentimetre =nombreEnMillimetre / 10, 2;
    printf ("%f millimetre est egal a %f centimetre \n\n", round(nombreEnMillimetre, 2), round(nombreEnCentimetre, 2));
    system ("PAUSE");
    return 0;
    }
    0
  9. jason-live Messages postés 219 Date d'inscription   Statut Membre 35
     
    explique moi ce que u as fais avec précision , j'ai du mal stp ;)
    0
  10. swoog42 Messages postés 1178 Statut Membre 245
     
    j'ai inséré la fonction round() dans ton affichage, avec seulement 2 décimales
    0
  11. jason-live Messages postés 219 Date d'inscription   Statut Membre 35
     
    ah ok ok merci
    0
  12. swoog42 Messages postés 1178 Statut Membre 245
     
    essaye et dis moi si ca marche
    0
  13. jason-live Messages postés 219 Date d'inscription   Statut Membre 35
     
    il y a un probleme a cette ligne : printf ("%f millimetre est egal a %f centimetre \n\n", round(nombreEnMillimetre, 2), round(nombreEnCentimetre, 2));
    0
  14. Pilow Messages postés 410 Statut Membre 71
     
    Pour moi le prototype de round c'est :

    double
         round(double x);


    Et cette fonction renvoi la partie entière du nombre envoyé non ?

    Donc pas de precision sur le nombre de decimale ?

     The round() functions return the integral value nearest to x rounding
         half-way cases away from zero, regardless of the current rounding direc-
         tion.
    


    En clair moi j'aurai mis :

    printf ("%f millimetre est egal a %f centimetre \n\n", round(nombreEnMillimetre), round(nombreEnCentimetre));


    Mais en ce cas tu n'as plus les chiffres après la virgule

    Donne nous le message d'erreur pour + d'infos
    0
  15. feadin91 Messages postés 282 Statut Membre 89
     
    Le fonctionnement que tu viens de citer est celui de la fonction mathématique "Tronquer"... Il me semble que ce n'est pas le seul fonctionnement de round()
    Il me semble, de mémoire, que round est surchargée.

    double round(double x, int y);


    non?
    0
  16. Pilow Messages postés 410 Statut Membre 71
     
    C'est fort possible.
    0
  17. jason-live Messages postés 219 Date d'inscription   Statut Membre 35
     
    nan mais laisser c'est pas grave de toute facon je suis la lecon grace au site du 0 donc on en est pas encore au fontion math et tout laissez ...
    0
  18. swoog42 Messages postés 1178 Statut Membre 245
     
    des surcharges en C ??? oula...
    en fait, j'ai confondu la fonction round() du C avec celle de php ><
    0
    1. feadin91 Messages postés 282 Statut Membre 89
       
      Ya pas de surcharges de fonctions en C? O_ô
      0
      1. Pilow Messages postés 410 Statut Membre 71 > feadin91 Messages postés 282 Statut Membre
         
        Un des apports les plus intéressants du C++ par rapport au C, hormis l'ajout du concept objet, est la possibilité d'appeler plusieurs fonctions avec le même nom, pour peu que celle-ci aient leurs arguments différents (en type et/ou en nombre).
        Ce principe est appelé surcharge de fonction. 


        ça doit vouloir dire que non, pas en C ^^
        0
  19. jason-live Messages postés 219 Date d'inscription   Statut Membre 35
     
    sinon vous avez pas des petit exo que vous me dites de faire comme ce que je viens de faire mais pas des truc duure hin ^^ parce que je débute dans le C !!
    merci a vous
    0
    1. feadin91 Messages postés 282 Statut Membre 89
       
      Vas-y, code un programme qui calcule le nombre d'atomes dans l'univers!! :P
      Facile...

      ..... non?

      Boarf, perso j'ai commencé à me faire la main sur des trucs bateaux, du genre des exos proposés par le SDZ donc...
      0
  20. swoog42 Messages postés 1178 Statut Membre 245
     
    commence déjà par suivre les cours du site du zero, tu auras une bonne base.
    0
  21. jason-live Messages postés 219 Date d'inscription   Statut Membre 35
     
    c'est une blague le calcul des atomes ? :O

    nan mais sérieux donnez moi des truc simple come ca je me connais plus je m'entraine a des truc sumple je comprend mieu apré ;)
    0
  • 1
  • 2
  • 3