Factorielle

maria3100 Messages postés 19 Statut Membre -  
paly2 Messages postés 261 Statut Membre -
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

  1. Dalfab Messages postés 638 Date d'inscription   Statut Membre Dernière intervention   102
     
    Bonjour,

    La boucle doit partir de n-p ou de 1, il faudrait choisir.
    i=n-p; 
    for(i=1;i>1;i--)
    0
  2. paly2 Messages postés 261 Statut Membre 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