Grazie dei vostri preziosi suggerimenti. Ho dichiarato di tipo double sia la mia funzione 'fattoriale()', sia il dato in Output. Credo sia il tipo esatto per rappresentare il risultato nella maniera corretta, mi sembra più che soddisfacente. Il mio problema, inoltre, era che non conoscevo il placeholder, lo specificatore del tipo dell'argomento, riferito in particolar modo alla printf(). Il mio utilissimo libro di C di Kernighan & Ritchie ed il seguente link printf (scoperto grazie a GliderKite) mi hanno indicato la soluzione in :
che mi consente di visualizzare correttamente l' n! e senza gli zeri dopo la virgola, che tanto non mi servono.codice:printf("\nL'n! di %i e' il seguente ---> %.0f.\n\n\n", numero, risultato);
Con gli interi a 64 bit (unsigned long long su gcc, unsigned int64 su VC++, uint64_t su tutti i compilatori che implementano correttamente stdint.h) dovresti guadagnare qualcosa, ma oltre il 20 non ci arrivi. Se ti servono valori "perfetti" l'unica è usare librerie per lavorare in precisione arbitraria (ad esempio la GMP); in alternativa, puoi lavorare con i double, ma ovviamente perderai in precisione.
Purtroppo di questi tipi (che farebbero benissimo al caso mio) non ho trovato il corretto placeholder. Li ho provati tutti, %e, %E, %f, %g, %Ld, ..., ma il programma mi restituiva NULL, 0, o si interrompeva.
Inoltre non sono riuscita ad eseguire il download della libreria GMP, perché non so aprire il file con estensione .tar.lz..![]()

Rispondi quotando