View Full Version : [C] Funzioni.
cataleen
10-04-2007, 18:44
Ciao ragazzi. Sto leggendo e svolgendo gli esercizi del libro "The C Programming Language". Dovrei risolvere un esercizio semplicissimo con una funzione. Questa funzione calcola la temperatura in Fahrenheit partendo da quella in Celsius. L'ho svolto, ma la temperatura in Fahrenheit e tutta uguale a zero.
#include <stdio.h>
int temp_calc(int a);
main()
{
int celsius;
printf("C\tF\n");
for (celsius = 0; celsius <= 200; celsius += 10)
printf("%d\t%.1f\n", celsius, temp_calc(celsius));
return 0;
}
int temp_calc(int temp)
{
int x; //fahr temp
x = (9.0 / 5.0) * temp + 32;
return x;
}
Ho bisogno di aiuto grazie. Ciao.
è sbagliata la firma della funzione, devi mettere il tipo di ritorno float
slartibartfast
10-04-2007, 19:28
nel formato dato a printf hai indicato l'uso di float (%.1f) mentre la funzione ritorna un int, o cambi il formato (%.1d) oppure modifichi la funzione in modo che ritorni un valore in virgola mobile:
double temp_calc(int temp)
{
double x; //fahr temp
x = (9.0 / 5.0) * temp + 32;
return x;
}
L'ho svolto, ma la temperatura in Fahrenheit e tutta uguale a zero.Se hai usato lo specificatore %.1f, allora il valore da passare alla printf dovrebbe essere un float o un double. La funzione temp_calc però ritorna un int, questo crea confusione nella printf.
Potresti fare un cast del valore a double:
printf("%d\t%.1f\n", celsius, (double) temp_calc(celsius));
Così però, occhio, perderesti in qualunque caso i decimali!
La soluzione migliore è fare in modo che 'x' in calc_temp sia double e che la funzione ritorni appunto un double.
Nel tuo caso comunque ti va bene perché andando avanti a passi di 10 gradi centigradi, il valore in Fahrenheit non ha mai decimali!!
cataleen
10-04-2007, 21:17
grazie ragazzi. dato che, come diceva andbin, il Fahrenheit non avra' mai decimali :muro: ho messo nella printf solo i %d. grazie mille.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.