El progtwig C ++ convierte fahrenheit en celsius

¿Alguien puede ayudarme a entender por qué esto da una salida de 0?

#include  using namespace std; int main() { float celsius; float fahrenheit; cout <> celsius; fahrenheit = (5/9) * (celsius + 32); cout << "Fahrenheit = " << fahrenheit << endl; return 0; } 

(5/9) se calculará por defecto como una división entera y será cero. Pruebe (5.0/9)

Fahrenheit a celsius sería (Fahrenheit - 32) * 5 / 9

En C ++, 5/9 calcula el resultado como un entero ya que ambos operandos son enteros. Debe dar una pista al comstackdor de que desea que el resultado sea flotante / doble. Puedes hacerlo lanzando explícitamente uno de los operandos como ((double)5)/9;

EDITAR Dado que está etiquetado como C ++, puedes hacer el lanzamiento de forma más elegante usando static_cast . Por ejemplo: static_cast(5)/9 . Aunque en este caso particular puede usar 5.0 / 9 directamente para obtener el resultado deseado, la conversión será útil cuando tenga variables en lugar de valores constantes como 5.

En la muestra del código, intenta dividir un entero con otro entero. Esta es la causa de todos tus problemas. Aquí hay un artículo que podría encontrar interesante sobre ese tema.

Con la noción de división de números enteros, puede ver de inmediato que esto no es lo que quiere en su fórmula. En cambio, necesita usar algunos literales de coma flotante .

Estoy bastante confundido por el título de este hilo y tu código de muestra. ¿Quieres convertir grados Celsius a Fahrenheit o hacer lo contrario?

Basaré mi muestra de código en su propia muestra de código hasta que proporcione más detalles sobre lo que desea.

Aquí hay un ejemplo de lo que puedes hacer:

 #include  //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; } 

La mejor manera sería

 #include  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; } 

🙂

¡El mío funcionó perfectamente!

 /* 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  // 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; } 

La respuesta ya se ha encontrado, aunque también me gustaría compartir mi respuesta:

 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; } 

Esta es una forma más adecuada de hacer esto; sin embargo, es un poco más complejo de lo que estabas buscando.

Es el más simple que se me ocurrió, así que quería compartirlo aquí,

 #include #include 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”<>cel; //convert and save it in 'fah' fah=1.8*cel+32.0; //show the output 'fah' cout< <”Temperature in Fahrenheit is “< 

Fuente: Celsius a Fahrenheit