Problemes avec mon programmes mais ne sait pas ou..

Résolu
sikim69 Messages postés 33 Date d'inscription   Statut Membre Dernière intervention   -  
sikim69 Messages postés 33 Date d'inscription   Statut Membre Dernière intervention   -
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

fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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,
2
sikim69 Messages postés 33 Date d'inscription   Statut Membre Dernière intervention   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..
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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é.
0
sikim69 Messages postés 33 Date d'inscription   Statut Membre Dernière intervention   1
 
Super de ta part de m'avoir expliquer. Je te remercie, bonne fin de soirée :)
0