Blog del corso di Programmazione (9 CFU) tenuto da Marco La Cascia presso l'Universita' di Palermo per il corso di laurea in Ingegneria Informatica e delle Telecomunicazioni. Tratta la programmazione a oggetti in Java.
mercoledì 19 ottobre 2011
Esercitazione supplementare
Come promesso eccovi una nuova esercitazione per acquisire maggiore familiarità con le caratteristiche di base del linguaggio C++.
Salve professore,nel 2°esercizio l'intero deve essere di N cifre o 4? se fosse di N valori,avevo pensato come metodo per determinare il numero di divisioni successive da fare,di usare il risultato dal Log10(valore) arrotondato per eccesso...
L'esercizio sarebbe meglio farlo per numeri di un qualsiasi numero N di cifre. In quel caso il Log10 potrebbe essere effettivamente un modo di calcolare il numero di cifre.
Non che sia molto importante perche' dipende da come scrivi il codice dopo ma il numero di cifre te lo da il log10 arrotondato per difetto e incrementato di 1. Es. log10(99) = 1.9956 -> 1+1 log10(100) = 2 -> 2+1 log10(101) = 2.0043-> 2+1 ...
A me sembra funzionare correttamente... A te che errore dava? Ma non e' che usi la virgola invece del punto per separare i decimali quando inserisci il valore?
Si... la virgola. Quindi il problema sta nell'inserire il numero con la virgola o il punto. Non c'è modo di aggirare l'errore senza fare uso di due variabili (una per la parte intera ed una per la parte decimale)?
No, perche' non si tratta di un errore, semplicemente l'operatore di estrazione dallo stream si aspetta il punto come separatore dei decimali. Non mi sembra comunque un grosso problema quello di usare il punto come separatore dei decimali durante l'inserimento dei dati.
Salve professore,nel 2°esercizio l'intero deve essere di N cifre o 4?
RispondiEliminase fosse di N valori,avevo pensato come metodo per determinare il numero di divisioni successive da fare,di usare il risultato dal Log10(valore) arrotondato per eccesso...
L'esercizio sarebbe meglio farlo per numeri di un qualsiasi numero N di cifre. In quel caso il Log10 potrebbe essere effettivamente un modo di calcolare il numero di cifre.
RispondiEliminami correggo,l'arrotandamento è da farsi per difetto
RispondiEliminaNon che sia molto importante perche' dipende da come scrivi il codice dopo ma il numero di cifre te lo da il log10 arrotondato per difetto e incrementato di 1.
RispondiEliminaEs.
log10(99) = 1.9956 -> 1+1
log10(100) = 2 -> 2+1
log10(101) = 2.0043-> 2+1
...
Professore credo che l'errore stia nel cast...
RispondiEliminahttp://www.fileserve.com/file/mrvkj2H/es6.rar
Come posso farlo funzionare?
Non mi fa scaricare il file perche' non sono registrato a fileserve. Inviamelo per email.
RispondiElimina#include
RispondiElimina#include
using namespace std;
int main(int argc, char *argv[])
{
int E500, E200, E100, E50, E20, E10, E5; // banconote
int E2, E1, c50, c20, c10, c5, c2, c1; // monete
float contanteOriginale;
long int contante;
cout << "Inserisca il contante in euro: ";
cin >> contanteOriginale;
contanteOriginale = contanteOriginale*100.00; // contante in cent
contante = (int)contanteOriginale;
E500 = contante / 50000;
contante %= 50000;
E200 = contante / 20000;
contante %= 20000;
E100 = contante / 10000;
contante %= 10000;
E50 = contante / 5000;
contante %= 5000;
E20 = contante / 2000;
contante %= 2000;
E10 = contante / 1000;
contante %= 1000;
E5 = contante / 500;
contante %= 500;
E2 = contante / 200;
contante %= 200;
E1 = contante / 100;
contante %= 100;
c50 = contante / 50;
contante %= 50;
c20 = contante / 20;
contante %= 20;
c10 = contante / 10;
contante %= 10;
c5 = contante / 5;
contante %= 5;
c2 = contante / 2;
contante %= 2;
c1 = contante;
char c=189;
cout << "La somma di " << contanteOriginale << " centesimi di euro ";
cout << "verra' erogata nel seguente modo: \n";
cout << E500 << "\tbanconote da E500\n";
cout << E200 << "\tbanconote da E200\n";
cout << E100 << "\tbanconote da E100\n";
cout << E50 << "\tbanconote da E50\n";
cout << E20 << "\tbanconote da E20\n";
cout << E10 << "\tbanconote da E10\n";
cout << E5 << "\tbanconote da E5\n";
cout << E2 << "\t monete da E2\n";
cout << E1 << "\t monete da E1\n";
cout << c50 << "\t monete da "<< c <<"50\n";
cout << c20 << "\t monete da "<< c <<"20\n";
cout << c10 << "\t monete da "<< c <<"10\n";
cout << c5 << "\t monete da "<< c <<"5\n";
cout << c2 << "\t monete da "<< c <<"2\n";
cout << c1 << "\t monete da "<< c <<"1\n";
system("PAUSE");
return EXIT_SUCCESS;
}
A me sembra funzionare correttamente... A te che errore dava? Ma non e' che usi la virgola invece del punto per separare i decimali quando inserisci il valore?
RispondiEliminaSi... la virgola.
RispondiEliminaQuindi il problema sta nell'inserire il numero con la virgola o il punto.
Non c'è modo di aggirare l'errore senza fare uso di due variabili (una per la parte intera ed una per la parte decimale)?
No, perche' non si tratta di un errore, semplicemente l'operatore di estrazione dallo stream si aspetta il punto come separatore dei decimali. Non mi sembra comunque un grosso problema quello di usare il punto come separatore dei decimali durante l'inserimento dei dati.
RispondiElimina