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: