[Risolto] - Celsius to Fahrenheit in C

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Avatar utente
SIV
Linux 3.x
Linux 3.x
Messaggi: 921
Iscritto il: mer 25 apr 2007, 14:07

[Risolto] - Celsius to Fahrenheit in C

Messaggio da SIV »

Slave ragazzi, torno a tormentarvi :thumbright:

Volevo creare una funzione che trasformi i gradi Clesius in Fahrenheit e che mostri la conversione °C->°F dei primi 10 gradi Celsius.

Ho scritto questo:

Codice: Seleziona tutto

#include<stdio.h>

double fahrenheit(int gradiC);

int main(){

int i;
double a;

for (i=0;i<11;i++){
a=fahrenheit(i);
printf("°C : %d  |  °F : %d\n",i,a);
}

return 0;
}


double fahrenheit(int gradiC){

double gF;

gF=gradiC*(9/5) + 32;

return gF;
}
Nessun errore fatale, ma sicuramente logico, dato l'output:

Codice: Seleziona tutto

muller@sab-muller ~/Test C $ ./a.out
°C : 0  |  °F : 0
°C : 1  |  °F : 0
°C : 2  |  °F : 0
°C : 3  |  °F : 0
°C : 4  |  °F : 0
°C : 5  |  °F : 0
°C : 6  |  °F : 0
°C : 7  |  °F : 0
°C : 8  |  °F : 0
°C : 9  |  °F : 0
°C : 10  |  °F : 0
muller@sab-muller ~/Test C $
Ultima modifica di SIV il lun 27 lug 2009, 7:43, modificato 1 volta in totale.

Avatar utente
robbybby
Linux 4.x
Linux 4.x
Messaggi: 1223
Iscritto il: sab 16 dic 2006, 10:48
Slackware: 13.1 / 64 bit
Kernel: 3.3.x
Desktop: KDE 4.4.5
Località: Fra Trantor e Terminus

Re: Celsius to Fahrenheit in C

Messaggio da robbybby »

Cosi', a un aveloce lettura vedo due errori:
1. 9/5 fa 1, essendo una divisione fra interi. Devi dare 9.0/5.0. In realta' basta 9.0/5, oppure 9/5.0.
2. Nella printf passi un double, ma metti un %d. O fai un cast a in di quanto ritornato da fahrenheit(), oppure, melgio, metti un %f, al posto del secondo %d.

Avatar utente
FireEater
Linux 3.x
Linux 3.x
Messaggi: 508
Iscritto il: sab 5 feb 2005, 0:00
Nome Cognome: Giuseppe M.
Slackware: Current
Kernel: 2.6.32.7-smp
Desktop: kde 4.3.4
Località: Cagliari <---> Torino

Re: Celsius to Fahrenheit in C

Messaggio da FireEater »

Lol
Mi hai preceduto di un secondo!!

Anche io vedo quei 2 errori.

Quindi vai con %f, e 9.0!

Ciao

Avatar utente
Blizzard
Master
Master
Messaggi: 1509
Iscritto il: mar 2 gen 2007, 22:53
Nome Cognome: Giovanni Santostefano
Slackware: 12.2
Kernel: 2.6.27.7-smp
Desktop: Fluxbox
Contatta:

Re: Celsius to Fahrenheit in C

Messaggio da Blizzard »

Offtopic:
robbybby ha scritto:Offtopic: 1. 9/5 fa 1, essendo una divisione fra interi. Devi dare 9.0/5.0. In realta' basta 9.0/5, oppure 9/5.0.
Offtopic:
mi confermi che il seguente errore è dovuto all'inferenza dei tipi del compilatore?
ovvero che tra due operandi interi sceglie di algoritmo la divisione int/int->int mentre specificando un double il compilatore esegue un cast implicito

(int->double)/double->double

giusto??? un po di ruggine sui compilatori comincia a manifestarsi :(

ciao
Gio

Avatar utente
robbybby
Linux 4.x
Linux 4.x
Messaggi: 1223
Iscritto il: sab 16 dic 2006, 10:48
Slackware: 13.1 / 64 bit
Kernel: 3.3.x
Desktop: KDE 4.4.5
Località: Fra Trantor e Terminus

Re: Celsius to Fahrenheit in C

Messaggio da robbybby »

@Blizzard: certo. Se il compilatore vede due interi, applica la divisione fra interi.
Se vede un intero e un double, eleva tutta l'espressione a double.

Se poi pensi al C++, dove puoi definire l'overloading dell'operatore / per un tipo definito dall'utente, le cose si fanno ancora piu' interessanti. Ma qui andiamo molto OT.

Avatar utente
SIV
Linux 3.x
Linux 3.x
Messaggi: 921
Iscritto il: mer 25 apr 2007, 14:07

Re: Celsius to Fahrenheit in C

Messaggio da SIV »

Ok ragazzi grazie mille :thumbright: Sono abbastanza ciuccio :D :D

Rispondi