| 
 | |||||||
| 
 | 
|  | 
|  | 
|  | Strumenti | 
|  10-04-2007, 19:44 | #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. | 
|   |   | 
|  10-04-2007, 20:18 | #2 | 
| Senior Member Iscritto dal: Aug 2006 
					Messaggi: 365
				 | 
		è sbagliata la firma della funzione, devi mettere il tipo di ritorno float
		 | 
|   |   | 
|  10-04-2007, 20:28 | #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;
} | 
|   |   | 
|  10-04-2007, 20:31 | #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: 01:22.









 
		 
		 
		 
		




 ho messo nella printf solo i %d. grazie mille.
  ho messo nella printf solo i %d. grazie mille.
		





 
  
 



 
                        
                        










