Type de variable? long int ?

Signaler
Messages postés
6
Date d'inscription
mercredi 12 mars 2003
Statut
Membre
Dernière intervention
14 juin 2003
-
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
-
salut!

je suis nouveau dans le C++ et j'ai un petit problème...

je suis en train de faire un petit programme permettant de calculer les factorielles... tout va bien jusque la...

cependant, lorsque le programme calcule la factorielle d'un grand nombre tel que 20 (par exemple), il ne donne pas la bonne réponse.

en fait il donne la bonne réponse jusque la factorielle de 16.

Le problème vient du type de la variable.
j'ai essayé long int et long double mais ces types ne "gèrent" pas assez de chiffres...

y a-t-il une alternative ou une petite astuce permettant de calculer la factorielle d'un grand nombre ?

merci d'avance!
ciao...

1 réponse

Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
Deja travaille sur factorielle avec du unsiged, tu ganes un bit. De toute maniere meme avec unsigned _int64 on atteint limite tres vite.
Si tu veux calculer nombres immenses il te faut ecrire des procedures de mul et sub, methode iterative, personnalises.
Truc envisageable (deja fait en dll C pour VB):
char* Fact(char *psznum);
Tu alloues la memoire dans ta Fact(), calcul, et return 0 si memoire insuffisante sinon bloc memoire contenant resultat. L'appelant doit liberer la memoire.
Tres bon exercice.
BruNews, ciao...