Vous êtes sur la page 1sur 5

Programme pascal qui permet de :

1)calcul de la PGCD( méthode de différence) en mode itérative


2)calcul de la PGCD( méthode de différence) en mode
récurrsive
3)calcul de la PGCD( méthode euclidienne) en mode
récurrsive
4)calcul de l''arrangement en mode itérative
5)calcul de l''arrangement en mode réccursive
6)calcul de la combinaison en mode itérative
7)calcul de la combinaison en mode réccursive
program menu_algo_arithmetiques;
uses wincrt;
var a,b,n,p,choix:integer;
ch:string;
rep:char;
procedure saisie_nb_positif(var n: integer);
begin
repeat
writeln('donner un entier positif et non nul');
readln(n);
until(n>0);
end;
function PGCD_dif_ite(a,b: integer):integer;
begin
while(a<>b) do
if(a>b) then a:=a-b
else
b:=b-a;
pgcd_dif_ite:=a;
end;
function PGCD_dif_rec(a,b :integer):integer;
begin
if(a=b) then
pgcd_dif_rec:=a
else if(a>b) then
pgcd_dif_rec:= pgcd_dif_rec(a-b,b)
else
pgcd_dif_rec:= pgcd_dif_rec(a,b-a)
end;
function PGCD_eucl_rec(a,b :integer):integer;
begin
if(b=0) then
pgcd_eucl_rec:=a
else
pgcd_eucl_rec:= pgcd_eucl_rec(b,a mod b);
end;
procedure saisie_n_p(var n,p :integer);
begin
repeat
writeln('donner la valeur de n');
readln(n);
writeln('donner la valeur de p');
readln(p);
until(p>=1) and (p<=n);
end;
function factoriel (n:integer):longint;
begin
if(n=0) then
factoriel:=1
else
factoriel:= n*factoriel(n-1);
end;
function arrange_ite(n,p:integer):real;
begin
arrange_ite:=factoriel(n)/factoriel(n-p);
end;
function arrange_rec(n,p,r:integer):real;
begin
if(n<=r)
then
arrange_rec:=1
else
arrange_rec:= n*arrange_rec(n-1,p,r);
end;
function combinaison_ite(n,p:integer):real;
begin
combinaison_ite:=factoriel(n)/(factoriel(p)*factoriel(n-p));
end;
function combinaison_rec(n,p:integer):real;
begin
if(p=0) or (p=n) then
combinaison_rec:=1
else
combinaison_rec:= combinaison_rec(n-1,p) + combinaison_rec(n-1,p-1);
end;

{ programme principal }
begin
repeat
writeln('1<------------ calcul de la PGCD( méthode de différence) en mode itérative');
writeln('2<------------ calcul de la PGCD( méthode de différence) en mode récurrsive');
writeln('3<------------ calcul de la PGCD( méthode euclidienne) en mode récurrsive');
writeln('4<------------ calcul de l''arrangement en mode itérative');
writeln('5<------------ calcul de l''arrangement en mode réccursive');
writeln('6<------------ calcul de la combinaison en mode itérative');
writeln('7<------------ calcul de la combinaison en mode réccursive');
repeat
writeln( 'donner votre choix');
readln(choix);
until choix in [1..8];
clrscr;
case(choix) of
1: begin
saisie_nb_positif(a);
saisie_nb_positif(b);
write('la PGCD(',a,',',b,') est :',pgcd_dif_ite(a,b));
end;
2: begin
saisie_nb_positif(a);
saisie_nb_positif(b);
writeln('la PGCD(',a,',',b,') est :',pgcd_dif_rec(a,b));
end;
3: begin
saisie_nb_positif(a);
saisie_nb_positif(b);
writeln('la PGCD(',a,',',b,') est :',pgcd_eucl_rec(a,b));
end;
4: begin
saisie_n_p(n,p);
writeln('l''arrangement de p élèments parmi n est :',arrange_ite(n,p):2:0);
end;
5: begin
saisie_n_p(n,p);
writeln('l''arrangement de p élèments parmi n est :',arrange_rec(n,p,n-p):2:0);
end;
6: begin
saisie_n_p(n,p);
writeln('la combinaison de p élèments parmi n est :',combinaison_ite(n,p):2:0);
end;
7: begin
saisie_n_p(n,p);
writeln('la combinaison de p élèments parmi n est :',combinaison_rec(n,p):2:0);
end;
end;
repeat
writeln;
writeln('voulez-vous cntinuez ou non o/n');
readln(rep);
until upcase(rep) in ['O','N'];
clrscr;
until upcase(rep)='N';
writeln('exit');
end.

Vous aimerez peut-être aussi