Calculer le factorielle d'un nombre (Dev-C++)
Bonjour tout le monde :
J'aimerai bien que vous me donnez un soutient pour pouvoir connaître ou j'ai commue l'erreur dans ce programme pour débutant.
Voila le programme:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| #include <stdio.h>
#include <stdlib.h>
main()
{
int X,i,Fac;
printf (" Veuillez entrez une valeur :\n " );
scanf ("%d",&X);
if (X>0) {
for (i=1;i<X;i--)
Fac=X*i;
printf (" Le factorielle de %d est : %d\n ",X,Fac);
}
else if(X==0)
printf (" Le factorielle de %d est : 1 ",X);
else
printf(" Veuillez entrez un nombre posetive\n ");
system (" pause ");
} |
Quand j'exécute le programme et je fais entrer la valeur 3 il ne me repend pas vite et lorsqu'il affiche la réponse il donne : -2147483648
Merci d'avance pour tous les gens qui mon aidaient. :ccool:
Re : Calculer le factorielle d'un nombre /// (Dev-C++)
Merci beaucoup mon ami, je n'oublierai jamais ton aide.
J'ai compris l'erreur que j'ai commue grâce à un ami qui ma bien guidé.
Voila toutes les étapes qui ma donné :
Dans ta boucle, tu fais: Fac=X* (i);
donc, si on exécute à la main pour X = 4:
pour i==1 : Fac = 4 * 1
pour i==2 : Fac = 4 * 2
pour i==3 : Fac = 4 * 3
A chaque fois, tu écrase la valeur précédente, donc c'est la dernière valeur qui est gardée (4 * 3).
Pour calculer ta factorielle, il te faut multiplier i par le calcul de valeur de la boucle précédente:
avant la boucle, tu dois mettre Fac = 1; (parce que sinon tu vas tout multiplier par 0, ce qui va faire 0 :) )
Ensuite pour X = 4, il te faut faire 1 * 2 * 3 * 4 = (((1 * 2) * 3) * 4), entre parenthèses, c'est la valeur Fac de la boucle précédente.
pour i == 1: Fac = 1 * 1 = Fac * 1 = Fac * i
pour i == 2: Fac = 1 * 2 = Fac * 2 = Fac * i
pour i == 3: Fac = 2 * 3 = Fac * 3 = Fac * i
pour i == 4: Fac = 6 * 4 = Fac * 4 = Fac * i
Et pourtant j'ai pu refaire un nouveau code le voila :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| #include <stdio.h>
#include <stdlib.h>
main()
{
int X,i,Fac;
printf (" Veuillez entrez une valeur : " );
scanf ("%d",&X);
Fac=1;
if (X>0)
{for (i=X ; i>=1 ; i--)
Fac=Fac*(i);
printf (" Le factorielle de %d est : %d ",X,Fac);
}
else if (X==0)
printf (" Le factorielle de %d est : 1\n ",X);
else
printf(" Veuillez entrez un nombre posetive\n ");
system (" pause ");
} |
Je remercie tous les gens qui m'ont ouvert la porte.
A bientôt :mrgreen: :rose2: