|
|
|
![]() |
|
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: 19:57.