Bonjour,
j'ai réalise un algorithme pour calculer la combinaison mais ca fonctionne pas. je crois qu'il ya un problème ds mon raisonnement. j'espère que vous pourrez m'aider thx d'avance. bon ya une parti qui est ds ma page "main" et l'autre est en "FONCTION"
----MAIN---
{
int nbr1,nbr2;
do
{ printf("P doit etre inferieur ou egal a N\n" );
printf("----Entrez la valeur de P\n" );
scanf("%4d",&nbr1);
printf("----Entrez la valeur de N\n" );
scanf("%4d",&nbr2);
}
while((nbr1<0)&&(nbr2<0));
if(nbr1>nbr2)
{
printf("---------------------------------------------------------------------\n" );
printf("RAPPEL doit etre inferieur ou egal a N\n" );
}
else
{
printf("La combinaison de %d dans %d est : %d\n", nbr1,nbr2,combinaison(nbr2,nbr1));
}
printf("\n" );
printf("\n" );
printf("---------------------------------------------------------------------" );
printf("\n" );
printf("\n" );
}
----FONCTION----
long combinaison(int n,int p)
{
long factn,factp,factdif,comb;
int dif,i;
factn=factp=factdif=1;//initialisation des variable factoriel a 1
dif=n-p;//ceci pour trouve la valeur de (n-p)!
if(n>0)// de maniere a ce que si la valeur est 0 on peut tjr appliquer la regle 0!
{//calcul de la factioriel de n
for(i=1;i<=n;i++)
{
factn=factn*i;
}
}
if(p>0)
{//calcul de la factioriel de p
for(i=1;i<=p;i++)
{
factp=factp*i;
}
}
if(dif>0)
{//calcul de la factioriel de la difference n et p
for(i=1;i<=dif;i++)
{
factdif=factdif*i;
}
}
comb=factn/(factp*factdif);
return comb;
}
---------------
kaima1