C
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$ ?
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
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?
Ah, che bello il casting...
Pensare che funziona anche su Excel!
Pensare che funziona anche su Excel!
Ho usato la virgola, scusatemi
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

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
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.
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.
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.
"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.
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 ?
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 ?
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.
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
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
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
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