Problemes avec mon programmes mais ne sait pas ou..

Résolu/Fermé
sikim69 Messages postés 33 Date d'inscription lundi 24 septembre 2012 Statut Membre Dernière intervention 30 mars 2013 - 31 oct. 2012 à 19:18
sikim69 Messages postés 33 Date d'inscription lundi 24 septembre 2012 Statut Membre Dernière intervention 30 mars 2013 - 31 oct. 2012 à 23:54
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 841
31 oct. 2012 à 21:01
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 lundi 24 septembre 2012 Statut Membre Dernière intervention 30 mars 2013 1
31 oct. 2012 à 22:26
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 841
31 oct. 2012 à 23:41
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 lundi 24 septembre 2012 Statut Membre Dernière intervention 30 mars 2013 1
31 oct. 2012 à 23:54
Super de ta part de m'avoir expliquer. Je te remercie, bonne fin de soirée :)
0