|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Mar 2006
Città: Torino
Messaggi: 128
|
[C] Funzioni.
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.
Codice:
#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;
}
__________________
Blog. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Aug 2006
Messaggi: 365
|
è sbagliata la firma della funzione, devi mettere il tipo di ritorno float
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: May 2005
Messaggi: 564
|
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:
Codice:
double temp_calc(int temp)
{
double x; //fahr temp
x = (9.0 / 5.0) * temp + 32;
return x;
}
|
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
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!!
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:28.




















