Exercice langage C: Fonctions qui renvoient ou a?chent un résultat

Ecrire un programme qui définit et utilise :

– une fonction fact(n) qui renvoie la factorielle du nombre n.

– une fonction affiche fact(n) qui ne renvoie rien et affiche la factorielle du nombre n.

– une fonction comb (int n , int p) qui renvoie le nombre de combinaisons de p éléments parmi n

– une fonction est_Divisible( a, b) qui renvoie 1 si a est divisible par b

– une fonction est_Premier(n) qui renvoie 1 si a est premier

Rappels :

– factorielle(n) = n!= n (n-1) (n-2) ...1.

– un nombre entier n est dit ”premier” s’il n’existe aucun entier d dans l’intervalle [2,n?1] tel que n soit divisible par d.


 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#include
#include
/? Ecriture et utilisation de fonctions?/
/? prototypes de fonctions?/
int somme (int x,int y); /? renvoie la somme de 2 ´el´ements?/
int fact (int n); /? n!?/
void a?che fact(int n); /? a?chage de n!?/
int comb (int n , int p); /? renvoie le nombre de combinaisons de p elements parmi n?/
int estDivisible(int a, int b) ; /? renvoie 1 si a est divisible par b?/
int estPremier(int n) ; /? renvoie 1 si a est premier?/
/?fonction principale)?/
int main ()
{ int n,p,r;
/? lectures de n et p?/
printf(”entrez un entier\n”);
scanf(%d”, &n);
printf(”entrez un entier inf´erieur au precedent\n”);
scanf(%d”, &p);
/? a?chage de la somme de n et p sans la ranger dans une variable?/
printf(”la somme de %d et %d est %d\n”, n,p,somme(n,p));
/? calcul de la somme de n et p rangement dans r et a?chage?/

r=somme(n,p);
printf(”la somme de %d et %d est toujours %d\n”, n,p,r);
/? a?chage de fact(n) en utilisant la fonction d’a?chage ?/
a?che fact (n);
/?a?chage de fact(n) en appellant fact(n) et en rangeant le r´esultat ?/
r=fact(n);
printf(”la factorielle de %d est %d\n”, n ,r);
/? a?chage du nombre de combinaisons de p objets parmi n?/
printf( ”le nombre de fa¸cons de prendre %d valeurs (non ordonn´ees) parmi %d\n”, p,n);
printf(”est %d\n”, comb(n,p));
/? le nombre de combinaisons de p objets parmi n est il premier ??/
if (estPremier( comb(n,p) ) )
printf(”ce nombre est premier\n”);
else
printf(”ce nombre n’est pas premier\n”);
return EXIT SUCCESS;
}/?d´e?nitions des fonctions)?/
int somme (int x,int y)
{ return x + y;
}
int fact (int n)
{ int i, res = 1;
for (i = 1; i<=n; i = i + 1)
res = res?i;
return res;
}
void a?che fact(int n)
{ int i, res = 1;
for (i = 1; i<=n; i = i + 1)
res = res?i;
printf(%d != %d\n”,n, res);
return ;
}
int comb (int n , int p)
{ return ( fact(n) / ( (fact(p)? fact(n?p)) ) );
}

int estDivisible(int a, int b)
{ if (a%b == 0)
return 1;
else
return 0;
}
int estPremier(int n)
{ int i;
for ( i =2; i< n?1; i = i + 1)
if (estDivisible(n,i))
return 0;
return 1;
}//entrez un entier inf´erieur au precedent
//4
//la somme de 5 et 4 est 9
//la somme de 5 et 4 est toujours 9
// 5 != 120
//la factorielle de 5 est 120
//le nombre de fa¸cons de prendre 4 valeurs (non ordonn´ees) parmi 5
//est 5
//ce nombre est premier
//
//td5.2 ex1 2 3 has exited with status 0.