Merci beaucoup mon ami, je n'oublierai jamais ton aide (Soileh, gilou)
J'ai compris l'erreur que j'ai commue grâce à un ami qui ma bien guidé, c'est presque comme ta mienne.(Soileh)
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 :
#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