dleewax
Messages postés6Date d'inscriptionmercredi 12 mars 2003StatutMembreDernière intervention14 juin 2003
-
12 mars 2003 à 22:30
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019
-
12 mars 2003 à 22:53
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 ?
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 12 mars 2003 à 22:53
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...