Ritorna alla pagina del corso.

Questa pagina contiene gli esercizi proposti in laboratorio e -alcune- delle soluzioni proposte.
Si suggerisce di provare a risolvere gli esercizi e solo in un secondo tempo di confrontare quanto fatto con le soluzioni proposte.

01: #include<stdio.h>
02: #include<stdlib.h>
03: 
04: int main(int argc, char **argv){
05: 
06:   printf("Inserisci un ammontare in euro: ");
07:   float somma;
08:   scanf("%f", &somma);
09: 
10:   printf("L'ammontare %.2f e' realizzabile usando\n", somma);
11: 
12:   int euro2 = somma / 2;
13:   somma = somma - 2 * euro2;
14:   printf("%3d monete da 2 eur\n", euro2);
15: 
16:   int euro1 = somma;
17:   somma = somma - euro1;
18:   printf("%3d monete da 1 eur\n", euro1);
19: 
20:   //FIXME invece di usare i numeri a virgola mobile e rischiare con arrotondamenti, uso solo numeri interi
21: 
22:   int isomma = somma  * 100 + .5; // a cosa serve il +.5?
23: 
24:   int euroc50 = isomma / 50;
25:   isomma = isomma - euroc50 * 50;
26:   printf("%3d monete da 50 eurocent\n", euroc50);
27: 
28:   int euroc20 = isomma / 20;
29:   isomma = isomma - euroc20 * 20;
30:   printf("%3d monete da 20 eurocent\n", euroc20);
31: 
32:   int euroc10 = isomma  / 10;
33:   isomma = isomma - euroc10 * 10;
34:   printf("%3d monete da 10 eurocent\n", euroc10);
35: 
36:   int euroc05 = isomma / 5;
37:   isomma = isomma - euroc10 * 5;
38:   printf("%3d monete da 5 eurocent\n", euroc05);
39: 
40:   int euroc02 = isomma / 2;
41:   isomma = isomma - euroc02 * 2;
42:   printf("%3d monete da 2 eurocent\n", euroc02);
43: 
44:   int euroc01 = isomma;
45:   printf("%3d monete da 1 eurocen\n", euroc01);
46: 
47:   printf("Ovvero da un totale di %d monete\n", euro2 + euro1 + euroc50 + euroc20 + euroc10 + euroc05 + euroc02 + euroc01);
48: 
49: 
50:   return 0;
51: }
52: 
53: // provate con 7.87 ->  c'e' un errore... o meglio, i calcoli sembrano tutti giusti ma cosa succede?
54: // come posso ovviare
55: 
56: