IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Convertisseur de temperatures


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 201
    Par défaut Convertisseur de temperatures
    bonjour,

    j'essaye de faire un programme en C de converstisseur de temperature de Fahreineit a Celcius. Je galere (debutant)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    #include <stdio.h>
     
    int main()
    {
    double fhr, celc;
     
    printf("Enter value of fahrenheit:");
     
    scanf("%d", & fhr);
     
    celc = (5/9)*(fhr - 32);
     
    printf("\n it's  : %f celcius",celc);
     
    }
    quand j'execute ce programme et que je met une valeure, c'est toujours 0 !

    Un probleme quelquepart ?

    Merci

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    Un probleme quelquepart ?
    %d avec un double.

    Accessoirement, ici c'est le forum C++, pas le forum C.

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    258
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 258
    Par défaut
    C'est plutôt dû au fait que 5/9 vale 0, et que lors de ta multiplication celc se retrouve toujours à 0. Lorsque tu divises deux entiers, tu fais une division entière. Pour obtenir le résultat désiré, une des deux valeurs doit être flottante, donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    double const celc = (5.0/9.0)*(fhr - 32);
    fera ton affaire

  4. #4
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Ca me fait méchamment penser au premier exo de TP qu'on fait en C chez nous.

  5. #5
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Salut,

    Mes corrections sont dans le code...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    #include <stdio.h>
     
    /* -TC- int main() n'est pas une forme valide de main. La norme autorise:
        int main(void) ou
        int main(int argc, char *argv[]) */
    int main(void)
    {
        /* -TC-
            Il est important d'indenter correctement ton programme, pour 
            le rendre plus lisible. Cela peut te sembler superflu dans un 
            micro programme tel que celui-là, mais cela te rendra bien
            des services, à toi et à tes collègues, par la suite */
     
        /* -TC-
            Il est préférable de définir une variable par ligne et éventuellement
            de commenter la signification de chaque fonction */
        double fhr;
        double celc;
     
        /* -TC-
            stdout est un flux de sortie tamponé. Le tampon est vidé lorsqu'il 
            est plein, ou lorsque qu'il rencontre un caractère fin de ligne. Ici,
            ine vidange explicite est nécessaire pour s'assurer de l'affichage 
            de "Enter value of fahrenheit: " */
        printf("Enter value of fahrenheit: ");
     
        /* -TC-
            Le spécificateur de format correct pour un double est %lf. De plus,
            pour sécuriser la saisie, il faudrait vérifier la valeur de retour de 
            scanf(), mais je laisse cela en suspend pour le moment (on
            supposera que l'utilisateur est de bonne volonté et entre une valeur
            du type demandé). */
        scanf("%lf", & fhr);
     
        /* -TC- Comme cela a déjà été dit, (5/9) vaut 0 (division entière). Pour
            obtenir un résultat correct, il faut écrire (5.0/9) ou (5/9.0) ou mieux,
            afin d'éviter les convertions implicites, (5.0/9.0)*/
        celc = (5.0/9.0) * (fhr - 32.0);
     
        printf("it's: %f celcius\n",celc);
     
        /* -TC-
            La fonction main() doit retourner en entier. Par convention, la valeur
            retournée est 0 (ou EXIT_SUCCESS définie dans stdlib.h) en cas 
            d'exécution avec succès, et toute autre valeur ou EXIT_FAILURE
            dans le cas contraire */
        return 0;
    }
    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  6. #6
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 201
    Par défaut
    Merci roulious, merci Thierry

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. convertisseur access/mySql
    Par loul91 dans le forum SQL Procédural
    Réponses: 14
    Dernier message: 09/08/2010, 15h14
  2. Convertisseur VB --> Delphi : VB2D
    Par gbuxo dans le forum Outils
    Réponses: 11
    Dernier message: 25/05/2005, 10h47
  3. [Choix de langage] Pour un convertisseur de fichiers
    Par FredBe dans le forum Langages de programmation
    Réponses: 28
    Dernier message: 13/12/2004, 17h22
  4. Température
    Par nicolas66 dans le forum Matériel
    Réponses: 10
    Dernier message: 28/06/2004, 04h28
  5. pression<->temperature
    Par clovis dans le forum Mathématiques
    Réponses: 7
    Dernier message: 22/04/2004, 19h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo