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

  1. fiddy Messages postés 441 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
    1. 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