Programma C per convertire Fahrenheit in Celsius

Sto scrivendo un programma per una class in cui mi trovo e ho bisogno di aiuto con un programma per convertire Fahrenheit in Celsius in C. Il mio codice è simile a questo

#include  int main (void) { int fahrenheit; double celsius; printf("Enter the temperature in degrees fahrenheit:\n\n\n\n"); scanf("%d", &fahrenheit); celsius = (5/9) * (fahrenheit-32); printf ("The converted temperature is %lf\n", celsius); return 0; } 

Ogni volta che lo eseguo, il risultato è 0.000000. So che mi manca qualcosa ma non riesco a capire cosa.

5/9 genererà una divisione intera, che sarà = 0

Prova invece a 5.0/9.0 .

Il tuo problema è qui:

 celsius = (5/9) * (fahrenheit-32); 

5/9 ti darà sempre 0 . Utilizzare invece ( 5.0/9.0 ).

prova celsius = ((double)5/9) * (fahrenheit-32); Oppure puoi usare 5.0.

Il fatto è che “/” esamina il tipo di operando. In caso di int il risultato è anche un int, quindi hai 0. Quando 5 è trattato come double, allora la divisione verrà eseguita correttamente.

scrivi 5/9.0 invece di 5/9 – questo forza la doppia divisione

È necessario utilizzare l’aritmetica in virgola mobile per eseguire questo tipo di formule con precisione. È sempre ansible convertire il risultato finale in un numero intero, se necessario.

Quando si tratta di float, deve essere 5.0f / 9.0f.

Quando si tratta di raddoppia, deve essere 5.0 / 9.0.

Quando si ha a che fare con gli interi, i resti / le frazioni vengono sempre troncati. 5/9 risultati tra 0 e 1, quindi viene troncato a solo 0 ogni volta. Questo moltiplica l’altro lato per zero e annulla completamente la tua risposta ogni volta.

5 e 9 sono di tipo int
quindi il 5/9 sarà sempre risultato 0 .

Puoi usare 5/9.0 o 5.0/9 o 5.0/9.0

Puoi anche controllare il programma C per convertire Fahrenheit in Celsius

 using System; public class Calculate { public static void Main(string[] args) { //define variables int Celsius; int fahrenheit; string input; //prompt for input //read in the input and convert Console.WriteLine("Enter Celsius temperature"); input = Console.ReadLine(); Celsius = Convert.ToInt32(input); //calculate the result fahrenheit = ((Celsius * 9 )/5) + 32; //print to screen the result Console.WriteLine("32 degrees Celsius is {0}", "equivilant to 89.60 degrees fahrenheit"); Console.ReadLine(); }