Me corriger un petit pgm en c, SVP

shyndows Messages postés 7 Statut Membre -  
shyndows Messages postés 7 Statut Membre -
normalement mon pgm fait appel à 2 fonctions l'une pour calculer n! (factorielle) et l'autre pour le calcul de la combinaison entre deux entiers, mais je n'arrive pas à l'executer.

#include<stdio.h>
int fact(int n);
int comb(int n,m);
void main()
{ int n,m,x;
printf("donner deux entiers n et m");
scanf("%d",&n);
scanf("%d",&m);
printf("n!= %d",fact(n));
printf("C(n,m)= %d",comb(n,m));
scanf("%d",&x);
}
int fact(int n)
{int f;
if (n==0)
f = 1;
else
f = n*fact(n-1);
return f;
}
int comb(int n,m)
{int c;
if (n>=m)
c= fact(n)/fact(m)*fact(n-m);
else
c= fact(m)/fact(n)*fact(m-n);
return f;
}
merci d'avance ^_^

1 réponse

fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention   1 847
 
Bonjour,

void main()
Le prototype de main sans argument est : int main(void)
Il renvoie de plus 0 lorsque le programme s'est bien déroulé. Donc il faut mettre un return 0; à la fin du main.

int comb(int n,m);
Pour mettre deux arguments, tu ne peux pas mettre le type en commun.
Il faut mettre : int comb(int n, int m);

Après avoir corrigé ces erreurs, ton programme devrait mieux marcher.
Si ça ne remarche pas, reposte le code avec les modifications, et dis-nous le message d'erreur.

Cdlt,
2
shyndows Messages postés 7 Statut Membre
 
le prbm est dans la fct comb dans le cas "else" c-à-d lorsque n<m

#include<stdio.h>
int fact(int n);
int comb(int n, int m);

void main()
{ int n,m,x;
printf(" Donner deux entiers n et m\n");
scanf("%d",&n);
scanf("%d",&m);
printf("\n n! = %d",fact(n));
printf("\n C(n,m) = %d",comb(n,m));
scanf("%d",&x);
}
int fact(int n)
{ int f;
if (n==0)
f = 1;
else
f = n*fact(n-1);
return f;
}
int comb(int n, int m)
{ int c;
if (n>=m)
c= fact(n)/fact(m)*fact(n-m);
else
c= fact(m)/fact(n)*fact(m-n);
return c;
}
0