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: // 6. Calcolare il numero piu' grande per cui io riesco a calcolare il fattoriale
02: 
03: #include<stdio.h>
04: #include<stdlib.h>
05: #include<limits.h>
06: 
07: int main(int argc, char **argv){
08: 
09:   // APPROCCIO DI STIMA A FORZA BRUTA
10:   // calcolo il fattoriale di n con n a crescere
11:   // quando il risultato e' tale per cui n!/n != (n-1)!  allora vuol dire
12:   // che c'e' stato overflow
13:   unsigned long long n  = 2;
14:   unsigned long long prec;
15:   unsigned long long fatt = 1;
16: 
17:   do
18:   {
19:     prec = fatt;
20: 
21:     fatt = fatt * n;
22: 
23:     printf("Il fattoriale di %2llu vale %llu\n", n, fatt);
24:     ++n;
25: 
26:   }
27:   while((fatt / (n - 1)) == prec);
28: 
29:   printf("Nota: %llu/%llu mi fornisce come risultato %llu\n", fatt, n-1, fatt / (n - 1));
30: 
31:   // APPROCCIO PIU' CORRETTO
32:   // parto dal massimo numero intero memorizzabile
33:   // e scendo fino a che non trovo il primo fattoriale...
34: 
35:   return 0;
36: }
37: 
38: