Factorielle

maria3100 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   -  
paly2 Messages postés 254 Date d'inscription   Statut Membre Dernière intervention   -
salut svp ce programme marche avec la boucle < while> mais avec la boucle for non toujours le résultat f=1

#include<stdio.h>
#include<conio.h>

main()
{ int i=0,p=0,n=0,f=1;
printf("donner n",n);
scanf("%d",&n);

printf("donner p",p);
scanf("%d",&p);
i=n-p;
while(i>1)
{f=f*i;
i--;
}

printf("donner resultat f=%d",f);
getch();}

ET AVEC LA BOUCLE FOR:

#include<stdio.h>
#include<conio.h

main()
{ int i=0,p=0,n=0,f=1;
printf("donner n",n);
scanf("%d",&n);

printf("donner p",p);
scanf("%d",&p);
i=n-p;
for(i=1;i>1;i--)
{f=f*i;
}

printf("donner resultat f=%d",f);
getch();}

3 réponses

Utilisateur anonyme
 
Une factorielle ne prend qu'un seul paramètre, ici tu demandes un N et un P

https://fr.wikipedia.org/wiki/Factorielle
0
Dalfab Messages postés 706 Date d'inscription   Statut Membre Dernière intervention   101
 
Bonjour,

La boucle doit partir de n-p ou de 1, il faudrait choisir.
i=n-p; 
for(i=1;i>1;i--)
0
paly2 Messages postés 254 Date d'inscription   Statut Membre Dernière intervention   25
 
Le p n'a rien à faire dans le calcul d'une factorielle, tu peux très bien l'enlever.

Pour la boucle for, comme l'a dit Dalfab, sois tu fais:
for(i=n;i>1;i--) // On part de N et on descend jusqu'à 1.
    f*=i; // C'est une notation raccourcie qui fait la même chose que f=f*i.
// Note: tu n'as pas besoin des accolades pour délimiter le bloc for, car celui-ci ne contient qu'une seule instruction.

Sois:
for(i=2;i<=n;i++) // On part de 1 (en fait de 2, tu n'as pas besoin de multiplier par 1) et on monte jusqu'à n.
    f*=i;

0