PDA

Visualizza la versione completa : Problema convertitore da C a F [C]


ilpellegrino
24-03-2015, 16:20
Ciao a tutti ragazzi,
premetto che sto seguendo il mio primo corso di Informatica (in particolare, programmazione in C), quindi sono tutt'altro che ferrato.
Ora, ho difficoltà a creare un Convertitore di Temperatura da C a F che, però, deve essere i grado da solo di capire il verso della conversione (da c a f, o viceversa) tramite l'immissione del carattere della scala prescelta.
Comunque, come si dice, un codice vale più di mille parole.. quindi ve lo copio :)

#include <stdio.h>
#include <stdlib.h>
#define C0 = 0
#define C1 = 100
#define F0 = 32
#define F1 = 212
int main()
{
int x, conversionedac, conversionedaf;
char scala, spazio;
printf("Convertitore Celsius/Farenheit\n");
scanf("%d%c%c", &x, &spazio, &scala);
if (scala == 'C'|| scala = 'c') {
conversionedac = (x - F0)*C1/(F1 - F0);
printf("Conversione effettuata. Il valore da lei richiesto e : %d F\n", &conversionedac);
}
else {
if (scala == 'F'|| scala == 'f'){
conversionedaf =F0 + x * (F1 - F0)/C1;
printf("Conversione effettuata. Il valore da lei richiesto e : %d C\n", &conversionedaf);
}
else {
printf("Errore: scala non riconosciuta.\n");
}
}
return 0;
}

Ora, i problemi che mi si presentano sono:

13|error: lvalue required as left operand of assignment|
14|error: expected expression before '=' token|
15|warning: format '%d' expects type 'int', but argument 2 has type 'int *'|
19|error: expected expression before '=' token|
20|warning: format '%d' expects type 'int', but argument 2 has type 'int *'|
||=== Build finished: 3 errors, 2 warnings ===|

Quindi è chiaro che io stia sbagliando qualcosa proprio a livello logico, anche perché la build mi fa acqua davvero da tutte le parti eppure, anche se è da 2 giorni che mi ci sbatto sopra, ancora non sono giunto ad una soluzione.. Potreste aiutarmi gentilmente?
Vi ringrazio in anticipo!

oregon
24-03-2015, 17:01
Esamina la linea del primo messaggio

if (scala == 'C'|| scala = 'c') {

Noti niente di strano?


P.S. Nelle #define non va il segno =

ilpellegrino
24-03-2015, 19:36
Esamina la linea del primo messaggio

if (scala == 'C'|| scala = 'c') {

Noti niente di strano?


P.S. Nelle #define non va il segno =

:D Effettivamente si..

Ho provato a ri arrangiarlo, cambiando la relazione e togliendo i define.. tuttavia non gira ancora bene. Qualsiasi valore di input mi restituisce sempre "28674"!
Allego la seconda versione, spero di non aver fatto altri errori idioti:

#include <stdio.h>
#include <stdlib.h>
int main()
{
float x, conversionedac, conversionedaf;
char scala, spazio;
conversionedac = (x*1.8) + 32;
conversionedaf = (x - 32)/1.8;
printf("Convertitore Celsius/Farenheit\n");
printf("Inserire il valore da lei richiesto : ");
scanf("%f%c%c", &x, &spazio, &scala);
if (scala == 'C'|| scala == 'c') {
printf("Conversione effettuata. Il valore da lei richiesto e : %f F\n", &conversionedac);
}
else {
if (scala == 'F'|| scala == 'f'){
printf("Conversione effettuata. Il valore da lei richiesto e : %f C\n", &conversionedaf);
}
else {
printf("Errore: scala non riconosciuta.\n");
}
}
return 0;
}

Vi ringrazio per l'aiuto :)

oregon
24-03-2015, 19:43
Ma scusa ... tu prima fai il calcolo e poi chiedi i valori da calcolare ???

linoma
24-03-2015, 19:49
C'è qualche & di troppo nei printf

ilpellegrino
24-03-2015, 20:31
Ma scusa ... tu prima fai il calcolo e poi chiedi i valori da calcolare ???

Mamma mia, hai ragione! Non so proprio dove ho la testa..
Quindi, infine, sistemato dovrebbe venir così:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
printf("Convertitore Celsius/Farenheit\n");
float x, conversionedac, conversionedaf;
char scala, spazio;
printf("Inserire il valore da lei richiesto : ");
scanf("%f%c%c", &x, &spazio, &scala);
conversionedac = x*1.8 + 32;
conversionedaf = (x-32)/1.8;

if (scala == 'C'|| scala == 'c') {
printf("Conversione effettuata. Il valore da lei richiesto e : %f F\n", &conversionedac);
}
else {
if (scala == 'F'|| scala == 'f'){
printf("Conversione effettuata. Il valore da lei richiesto e : %f C\n", &conversionedaf);
}
else {
printf("Errore: scala non riconosciuta.\n");
}
}
return 0;
}

Ora non vedo cosa ci sia che non va.. Eppure qualsiasi valore di input mi restituisce 0,00000 C (o F)

oregon
25-03-2015, 01:23
Non hai tenuto conto di quello che ti ha scritto linoma...

ilpellegrino
25-03-2015, 10:11
C'è qualche & di troppo nei printf

Scusami, ma non avevo letto!

Ma nel printf non è giusto mettere a cosa si riferiscono?
Nel senso, ho messo solo & riferiti all'operazione che il printf mi deve stampare a video..

Li devo togliere?

linoma
25-03-2015, 10:18
Scusami, ma non avevo letto!

Ma nel printf non è giusto mettere a cosa si riferiscono?
Nel senso, ho messo solo & riferiti all'operazione che il printf mi deve stampare a video..


Nel tuo caso no, cerca di capire cosa è l'operatore & e nel tu caso che negl'altri che il C prevede

ilpellegrino
25-03-2015, 11:24
Nel tuo caso no, cerca di capire cosa è l'operatore & e nel tu caso che negl'altri che il C prevede

Hai completamente ragione.. Tolti gli "&", il programma funziona!
Grazie a tutti ragazzi! :)

Loading