2010-07-10 8 views
10

Quelqu'un peut-il m'aider à comprendre pourquoi cela donne une sortie de 0?Programme C++ convertit Fahrenheit en Celsius

#include <iostream>       
using namespace std;      

int main() {        
    float celsius;       
    float fahrenheit; 

    cout << "Enter Celsius temperature: "; 
    cin >> celsius; 
    fahrenheit = (5/9) * (celsius + 32); 
    cout << "Fahrenheit = " << fahrenheit << endl; 

    return 0;        
} 
+2

Oui, je viens de remarquer la formule incorrecte aussi bien. Le programme a de plus gros problèmes que d'imprimer 0. – TNi

+1

Votre exemple de code semble indiquer que vous voulez convertir les degrés Celsius en degrés Fahrenheit. Que voulez-vous convertir? – Alerty

Répondre

22

(5/9) sera par défaut calculé comme une division entière et sera zéro. Essayez (5.0/9)

+7

Ou '(Celsius + 32) * 5/9'. – Gabe

+8

@Gabe: Formule incorrecte: P –

5

En C++, 5/9 calcule le résultat sous la forme d'un entier car les deux opérandes sont des entiers. Vous devez donner un indice au compilateur que vous voulez que le résultat soit un float/double. Vous pouvez le faire en jetant un des explictly opérandes comme ((double)5)/9;

EDIT Comme il est marqué C++, vous pouvez faire le bit de coulée plus en utilisant l'élégance static_cast. Par exemple: static_cast<double>(5)/9. Bien que dans ce cas particulier, vous pouvez directement utiliser 5.0/9 pour obtenir le résultat souhaité, la coulée sera utile lorsque vous avez des variables au lieu de valeurs constantes telles que 5.

+0

Je ne vois pas pourquoi cela a été downvoted. C'est une réponse correcte, bien qu'il puisse s'agir d'un candidat [SCITE] (http://meta.stackexchange.com/questions/19478/the-many-memes-of-meta/19535#19535). –

+1

Oh, ne pas utiliser une fonte laide. Tapez un littéral float directement comme suggère jdv. –

+0

@Jon: Ne pas dire que c'est la meilleure réponse, mais je dis que ça ne mérite pas de downvotes. Ce n'est pas * faux * de quelque façon que ce soit, ce n'est pas le meilleur moyen. –

6

Fahrenheit en degrés Celsius serait (Fahrenheit - 32) * 5/9

+0

+1 Formule correcte. Ne comprends pas tout à fait les downvotes. – TNi

+0

Malgré le titre, le programme est clairement écrit pour convertir Celsius en Fahrenheit (même si la formule est erronée) –

+0

Votre code ne fonctionnera pas non plus. Essaye le. (Indice: quel est le résultat de quoi que ce soit/9 va être en C++?) –

1

meilleur moyen serait

#include <iostream>       
using namespace std;      

int main() {        
    float celsius;       
    float fahrenheit; 

    cout << "Enter Celsius temperature: "; 
    cin >> celsius; 
    fahrenheit = (celsius * 1.8) + 32;// removing division for the confusion 
    cout << "Fahrenheit = " << fahrenheit << endl; 

    return 0;        
} 

:)

3

Dans votre exemple de code que vous essayez de diviser un entier avec un autre entier. C'est la cause de tous vos problèmes. Voici un article qui pourrait être intéressant sur ce sujet. Avec la notion de division entière, vous pouvez voir tout de suite que ce n'est pas ce que vous voulez dans votre formule. Au lieu de cela, vous devez utiliser un floating point literals.

Je suis un peu confus par le titre de ce thread et votre exemple de code. Voulez-vous convertir les degrés Celsius en degrés Fahrenheit ou faire le contraire? Je vais baser mon exemple de code sur votre propre exemple de code jusqu'à ce que vous donniez plus de détails sur ce que vous voulez.

Voici un exemple de ce que vous pouvez faire:

#include <iostream> 
//no need to use the whole std namespace... use what you need :)       
using std::cout; 
using std::cin; 
using std::endl;      

int main() 
{ 
    //Variables       
    float celsius, //represents the temperature in Celsius degrees 
      fahrenheit; //represents the converted temperature in Fahrenheit degrees 

    //Ask for the temperature in Celsius degrees 
    cout << "Enter Celsius temperature: "; 
    cin >> celsius; 

    //Formula to convert degrees in Celsius to Fahrenheit degrees 
    //Important note: floating point literals need to have the '.0'! 
    fahrenheit = celsius * 9.0/5.0 + 32.0; 

    //Print the converted temperature to the console 
    cout << "Fahrenheit = " << fahrenheit << endl;        
} 
0

mine a parfaitement fonctionné!

/* Two common temperature scales are Fahrenheit and Celsius. 
** The boiling point of water is 212° F, and 100° C. 
** The freezing point of water is 32° F, and 0° C. 
** Assuming that the relationship bewtween these two 
** temperature scales is: F = 9/5C+32, 
** Celsius = (f-32) * 5/9. 
***********************/ 

#include <iostream> // cin, cout 

using namespace std; // System definition of cin and cout commands, 
        // if not, programmer would have to write every 
        // single line as: std::cout or std::cin 

int main() // Main function 

{ 

    /* Declare variables */ 
    double c, f; 

    cout << "\nProgram that changes temperature from Celsius to Fahrenheit.\n"; 
    cout << "Please enter a temperature in Celsius: "; 

    cin >> c; 
    f = c * 9/5 + 32; 
    cout << "\nA temperature of " << c << "° Celsius, is equivalent to " 
     << f << "° Fahrenheit.\n"; 
    return 0; 

} 
0

La réponse a déjà été trouvé bien que je voudrais aussi partager ma réponse:

int main(void) 
{ 
using namespace std; 

short tempC; 
cout << "Please enter a Celsius value: "; 
cin >> tempC; 
double tempF = convert(tempC); 
cout << tempC << " degrees Celsius is " << tempF << " degrees Fahrenheit." << endl; 
cin.get(); 
cin.get(); 
return 0; 

} 

int convert(short nT) 
{ 
return nT * 1.8 + 32; 
} 

Ceci est une façon de faire plus appropriée; Cependant, c'est un peu plus complexe que ce que vous vouliez.

0

Il est le plus simple que je pouvais trouver, si je voulais partager ici,

#include<iostream.h> 
#include<conio.h> 
void main() 
{ 
//clear the screen. 
clrscr(); 
//declare variable type float 
float cel, fah; 
//Input the Temperature in given unit save them in ‘cel’ 
cout<<”Enter the Temperature in Celsius”<<endl; 
cin>>cel; 
//convert and save it in ‘fah’ 
fah=1.8*cel+32.0; 
//show the output ‘fah’ 
cout<<”Temperature in Fahrenheit is “<<fah; 
//get character 
getch(); 
} 

Source: Celsius to Fahrenheit

Questions connexes