C

n.icola114
Ciao,

vorrei imparare a fare qualcosa in C, ma ho qualche problema
e non ho ancora trovato un libro una dispensa che mi possa aiutare

quindi chiedo a voi ma credo siano domande piuttosto banali, per il momento mi chiedo perchè
ad esempio $7,2 : 3,5 = 7$ ?
$/$ dovrebbe restituirmi un intero anche se i dati sono reali ma perchè $7$ ?

Risposte
TomSawyer1
Riporta l'operazione che hai fatto in codice C. Non è che hai usato anche lì la virgola e non il punto, per i decimali? Poi, la variabile in cui metti il risultato è int?

Cheguevilla
Ah, che bello il casting...
Pensare che funziona anche su Excel!

n.icola114
Ho usato la virgola, scusatemi :oops:
ma il compilatore non dovrebbe dirmi qualcosa, come interpretava questa istruzione

printf("= %f\n",7,2 / 7,5); ? Comunque non tronca il risultato alla parte intera, io pensavo di si

TomSawyer1
Ma cosi' stampi un float, per avere un risultato intero, devi usare %d. Non so cosa dia con la virgola, ma in ogni caso devi usare il punto.

Salamandra2
Non sono molto esperto in C, ma mi sembra che la printf sostanzialmente stampa il primo numero che gli hai dato, cioe' 7, e probabilmente con dei decimali essendo un float ( non so se il cast in qusto caso e' automatico, ma penso di si'); gli altri li legge, li valuta e li ignora bellamente...

Per i libri e' sufficiente usare Google e trovi un sacco di materiale in Italiano o in Inglese, e poi se hai dubbi chiedi qui.

eugenio.amitrano
"TomSawyer":
Ma cosi' stampi un float, per avere un risultato intero, devi usare %d. Non so cosa dia con la virgola, ma in ogni caso devi usare il punto.


Infatti,
il problema e' porprio la virgola.

La virgola separa i valori.
se tu avessi scritto printf("= %f %f %f\n",7,2 / 7,5);
dovrebbe stamparti "7 0.285714 5" oppure "7 0 14", forse perche' 2/7 ha bisogno di casting.

n.icola114
Ho capito cosa faceva quell'istruzione,
la printf aspettava infatti un solo parametro dopo la stringa di formato, io ne specificavo più di uno
quindi li ignorava e convertiva $7$ in un float

adesso sto cercando di fare qualcosa'altro,
come faccio ad utilizzare una variabile di tipo char per contenere un intero

char c

scanf("%c",&c)

in questo modo metto in c il carattere stampato, invece voglio memorizzare un intero, devo utilizzare %d ?

TomSawyer1
Hmm, non si capisce bene cosa intendi. In che senso vuoi far contenere un intero ad una variabile char? Se hai bisogno di un intero, usa una variabile int, e %d nello scanf.

n.icola114
cerco di spiegarmi meglio

anche se è inutile volevo utilizzare una variabile di tipo char come se fosse un int,
da quanto ne so i due tipi differiscono solo per la dimensione occupata in memoria
è solo la scanf che con un istruzione del tipo

scanf("%c", &c)

converte il carattere inserito nel suo codice ascii
se ad esempio inserisco $5$ dentro c troverò "00110101" io invece voglio "00000101"

forse ho risolto però

char c;

scanf("%d", &c);
printf("%d",c - (c+1));


mi stampa $-1$ perciò mi sembra che funzioni

n.icola114
Lasciando perdere per il momento il tipo char, ho cercato di realizzare un programma per la conversione lire euro

case 'E' : scanf("%f", &euro);
printf("\n%4.2f Euro corrispondono a %d Lire\n", euro, euro*1936.27);

break;

questa parte qui non va bene ma non ne capisco il motivo,
un intero per le lire e 2 cifre dopo la virgola con l'approsimazione sulla seconda decimale per l'euro

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.