Repository 32bit  Forum
Repository 64bit  Wiki

[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.

[Risolto] - Celsius to Fahrenheit in C

Messaggioda SIV » dom lug 26, 2009 18:43

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 lug 27, 2009 6:43, modificato 1 volta in totale.
Avatar utente
SIV
Linux 2.6
Linux 2.6
 
Messaggi: 918
Iscritto il: mer apr 25, 2007 13:07
Località: Bari (Provincia)

Re: Celsius to Fahrenheit in C

Messaggioda robbybby » dom lug 26, 2009 19:28

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
robbybby
Linux 3.x
Linux 3.x
 
Messaggi: 1175
Iscritto il: sab dic 16, 2006 10:48
Località: Fra Trantor e Terminus
Slackware: 13.1 / 64 bit
Kernel: 3.3.x
Desktop: KDE 4.4.5

Re: Celsius to Fahrenheit in C

Messaggioda FireEater » dom lug 26, 2009 20:06

Lol
Mi hai preceduto di un secondo!!

Anche io vedo quei 2 errori.

Quindi vai con %f, e 9.0!

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

Re: Celsius to Fahrenheit in C

Messaggioda Blizzard » dom lug 26, 2009 20:16

Offtopic:
robbybby ha scritto: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.

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
Blizzard
Master
Master
 
Messaggi: 1509
Iscritto il: mar gen 02, 2007 22:53
Nome Cognome: Giovanni Santostefano
Slackware: 12.2
Kernel: 2.6.27.7-smp
Desktop: Fluxbox

Re: Celsius to Fahrenheit in C

Messaggioda robbybby » dom lug 26, 2009 21:06

@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
robbybby
Linux 3.x
Linux 3.x
 
Messaggi: 1175
Iscritto il: sab dic 16, 2006 10:48
Località: Fra Trantor e Terminus
Slackware: 13.1 / 64 bit
Kernel: 3.3.x
Desktop: KDE 4.4.5

Re: Celsius to Fahrenheit in C

Messaggioda SIV » lun lug 27, 2009 6:42

Ok ragazzi grazie mille :thumbright: Sono abbastanza ciuccio :D :D
Avatar utente
SIV
Linux 2.6
Linux 2.6
 
Messaggi: 918
Iscritto il: mer apr 25, 2007 13:07
Località: Bari (Provincia)


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite