Erreur de Calcul sur le programme de calcul du nombre de neper e
Bonsoir à tous !
J'écrit un programme en C, qui me permet de calculer le nombre de Neper e,
mais lors de l'exécution du progrmme, un mauvais résultat s'affiche, or nous savons tous que: e=2.71.....
J'écrit au préalable une fonction facto(factorielle d'un nombre entier) qui marche très bien.
Quelqu'un pourrez m’orienter où se trouverait l'erreur , s'il vous plait.
Merci
Mon code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
int main()
{
int k, m;
float neper=0;
long int tmp;
printf("Entrer le nombre de terme : ");
scanf("\t%d", &m);
for(k=0; k<=m; k++){
tmp=facto(k);
neper=neper+(1/tmp);
}
printf("\nLe nombre de Népere e = %f", neper);
do{}while(kbhit()==0);
return 0;
} |
Erreur de Calcul sur le programme de calcul du nombre de neper e
Bonjour !
supersnail : Ma fonction a en effet un problème dont je viens juste de m'en apercevoir !
facto(0), telle que j'ai l'écrit me renvoi 1, ce qui n'est pas faux, mais facto(5) me renvoi aussi 1. C'est donc pas du bon !
Et je ne te comprend pas très bien, quand tu me dis que ce n'est pas bien optimisé de mettre la fonction dans la boucle, hors je vois que ça marche.
Aurais-tu une autre solution ? :)
En réécrivant facto() ainsi : (N*facto(N-1)), ça va
Aussi, Obsidian a bien raison sur (1.0/tmp) !.
A présent j'obtient : e=2.716667
Mais avec (1/tmp) j'obtenait e=2.000
ça, c'est vraiment un piège. :roll: Je vais fouiller sur, le transtypage !
Merci à tous les deux !:yaisse2: