Probleme avec les variables
Résolu
doumbia.danse
Messages postés
52
Statut
Membre
-
doumbia.danse Messages postés 52 Statut Membre -
doumbia.danse Messages postés 52 Statut Membre -
Bonjour tout le monde,
Au fait j'ai créer ma fonction qui me calcule le factoriel d'un nombre et retourne un double, mais il arrive que si j'envoie un nombre assez grand il y ait un debordement de memoire ou quoi et soit le programme m'affiche 1 ou bien il m'affiche quelque chose illogique, je me demandais si je pouvais créer une variable qui puisse contenir même le factoriel de "5000" :-D
voici mon code avant tout :
Merci d'avance ;
Au fait j'ai créer ma fonction qui me calcule le factoriel d'un nombre et retourne un double, mais il arrive que si j'envoie un nombre assez grand il y ait un debordement de memoire ou quoi et soit le programme m'affiche 1 ou bien il m'affiche quelque chose illogique, je me demandais si je pouvais créer une variable qui puisse contenir même le factoriel de "5000" :-D
voici mon code avant tout :
double Factoriel(double nombre)
{
int i=0;
double nbre=1;
for(i=1;i<=nombre;i++)
{
nbre=nbre*i;
}
return nbre;
}
Merci d'avance ;
2 réponses
-
Bonjour,
C'est possible mais pas avec les types de bases (int, long, float, double).
Tu peux regarder Calcul de la factorielle pour de grands nombres.
Les codes sont en Java mais c'est les même problèmes qu'en C.-
-
BigInteger n'existe pas en C, mais comme le disait fiddy, tu as des bibliothèques dédiées.
Par exemple GMP : https://fr.wikipedia.org/wiki/GNU_MP
-
-
En plus de ce que dit KX, je tiens à souligner qu'il vaut mieux ne pas utiliser des float/double pour ce genre de calcul. Sinon tu auras des erreurs. Il faut travailler avec des entiers.
En natif (C99), tu as le type long long. Au-delà, il te faudra passer par une bibliothèque dédiée.