Problemes avec mon programmes mais ne sait pas ou..

Résolu
Bonsoir, je viens de faire un programme pour l'ecole ou je transforme les degrees farhenheit en degree celcius mais apparement, je n'obtiens aucunes reponses lors de la compilation..

Merci de m'aider, voilà mon programme :

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

int main ()
{
float far, c1,c2;
float celcius;
printf("Entrez la temperature en Farhenheit : ");
scanf("%f",&far);
c1=far-32;
c2=5/9;
celcius= c2 * c1;
printf("\nVoici la temperature en Celcius : %f", celcius);

fflush(stdin);
getch(); getch();
return(0);
}

1 réponse

  1. Contributeur
    c2=5/9;
    c2 vaudra 0. Il faut faire : c2=(float)5/9 ou mieux c2=5.0/9 et travailler en double.
    fflush(stdin);
    A ne jamais utiliser. Le comportement est non standard.
    Utilise un simple getchar() ou une boucle while sur getchar()!='\n' ou EOF.

    getch();
    getchar(); c'est mieux c'est portable.

    return(0);
    return n'est pas une fonction. return 0; est suffisant.

    #include <math.h>
    Inutile ici.

    #include <conio.h>
    Utile pour getch() (obsolète (utilise plutôt _getch())) mais non portable. Cf. plus haut.

    Cdlt,
    1. Alors là, merci pour toutes ces infos :) Je vais corriger..

      Mais vu que j'ai tout declarer en float, c2 ne devrait pas valoir 0, ce n'est pas logique. Vu que float = reel et que le resultat de 5/9 vaut un reel..
    2. Contributeur
      c2 ne devrait pas valoir 0, ce n'est pas logique. Vu que float = reel et que le resultat de 5/9 vaut un reel..
      Sauf que 5 et 9 sont des entiers. Donc 5/9 est une division d'entier et cela retourne logiquement 0. Le 0 sera transformé en 0.0f (float) (promotion automatique) pour être stocké dans c2. Mais toi tu veux faire une division réelle. Il faut donc faire 5.0f/9 ou (float)5/9. Ainsi tu auras le résultat escompté.
    3. Super de ta part de m'avoir expliquer. Je te remercie, bonne fin de soirée :)