les sous programmes : Factorielle
2 participants
Forum INFOMATH :: Enseignement de l'informatique :: Informatique - Collège & Lycée :: Exercices Pascal
Page 1 sur 1
les sous programmes : Factorielle
exercice
1
Ecrire une fonction qui retourne la factorielle d'un nombre.
Remarque :
Le type de retour de la fonction est Longint (entier long) pour nous permettre de calculer la factorielle de nombres supérieurs à 8. En effet, les entiers étant codés sur 16 bits, ils sont compris entre -32768 et 32767, or 8! = 40320, il y'a donc débordement et nous obtenons une valeur négative qui est réalité -32768 + (40320 - 32767) - 1 soit -25216 (en fait, 32767+1 = -32768 d'après l'arithmétique des entiers signés).
2
Déduire de la solution précédente, une fonction qui permet le calcul de la combinaison de p dans q définie par : Comb(p, q)=q!/(p!*(q-p)!) ensuite construire le triangle de Pascal en prenant en entrée le nombre de lignes à afficher.
1
Ecrire une fonction qui retourne la factorielle d'un nombre.
Remarque :
Le type de retour de la fonction est Longint (entier long) pour nous permettre de calculer la factorielle de nombres supérieurs à 8. En effet, les entiers étant codés sur 16 bits, ils sont compris entre -32768 et 32767, or 8! = 40320, il y'a donc débordement et nous obtenons une valeur négative qui est réalité -32768 + (40320 - 32767) - 1 soit -25216 (en fait, 32767+1 = -32768 d'après l'arithmétique des entiers signés).
2
Déduire de la solution précédente, une fonction qui permet le calcul de la combinaison de p dans q définie par : Comb(p, q)=q!/(p!*(q-p)!) ensuite construire le triangle de Pascal en prenant en entrée le nombre de lignes à afficher.
pirate- Entier Naturel
- Nombre de messages : 28
Réputation : 0
Points : 6447
Date d'inscription : 30/03/2007
Re: les sous programmes : Factorielle
pirate a écrit:exercice
1
Ecrire une fonction qui retourne la factorielle d'un nombre.
Remarque :
Le type de retour de la fonction est Longint (entier long) pour nous permettre de calculer la factorielle de nombres supérieurs à 8. En effet, les entiers étant codés sur 16 bits, ils sont compris entre -32768 et 32767, or 8! = 40320, il y'a donc débordement et nous obtenons une valeur négative qui est réalité -32768 + (40320 - 32767) - 1 soit -25216 (en fait, 32767+1 = -32768 d'après l'arithmétique des entiers signés).
2
Déduire de la solution précédente, une fonction qui permet le calcul de la combinaison de p dans q définie par : Comb(p, q)=q!/(p!*(q-p)!) ensuite construire le triangle de Pascal en prenant en entrée le nombre de lignes à afficher.
Salut,
C'est un bon sujet de révision pirate,
Pour le calcul du factoriel, je te propose:
- Code:
function factoriel(N:integer):longint;
var i:integer; f:longint;
begin
f:=1;
for i:=1 to N do
f := f * i;
factoriel := f;
end;
- Code:
function Combinaison(N:integer, P:integer):integer;
begin
Combinaison := factoriel(N) div (factoriel(P)*factoriel(N-P));
end;
J'espère que c poooo erronééééé.
Attendant la confirmation de l'admin - B.NabiL
:farao: chehya tayba
methodiX- Admin
-
Nombre de messages : 1260
Localisation : Le couloir de l'école polytechnique de Tunis
Réputation : 68
Points : 7253
Date d'inscription : 22/03/2007
Feuille de personnage
Capacité linguistique:
(1000/1000)
Re: les sous programmes : Factorielle
alor voila la correction
la premiere question
program facto;
uses crt;
function factorielle(n: integer): longint;
var
fac: longint;
begin
fac := 1;
while (n > 1) do
begin
fac := fac * n;
n := n - 1;
end;
factorielle := fac;
end;
var
n: integer;
begin
clrscr;
writeln('Entrez la valeur de n');
readln(n);
writeln('n! = ', factorielle(n));
readln;
end.
la deuxieme question
program trianglepascal;
uses crt;
function factorielle(n: integer): longint;
var
fac: longint;
begin
fac := 1;
while (n > 1) do
begin
fac := fac * n;
n := n - 1;
end;
factorielle := fac;
end;
function combinaison(p: integer; q: integer): longint;
begin
combinaison := factorielle(q) div (factorielle(p) * factorielle(q - p));
end;
var
n: integer;
p, q: integer;
begin
clrscr;
write('Entrez le nombre de ligne du triangle de Pascal a afficher : ');
readln(n);
for q := 0 to n do
begin
p := 0;
while (p <= q) do
begin
write(combinaison(p, q): 7);
p := p + 1;
end;
writeln;
end;
readln;
end.
la premiere question
program facto;
uses crt;
function factorielle(n: integer): longint;
var
fac: longint;
begin
fac := 1;
while (n > 1) do
begin
fac := fac * n;
n := n - 1;
end;
factorielle := fac;
end;
var
n: integer;
begin
clrscr;
writeln('Entrez la valeur de n');
readln(n);
writeln('n! = ', factorielle(n));
readln;
end.
la deuxieme question
program trianglepascal;
uses crt;
function factorielle(n: integer): longint;
var
fac: longint;
begin
fac := 1;
while (n > 1) do
begin
fac := fac * n;
n := n - 1;
end;
factorielle := fac;
end;
function combinaison(p: integer; q: integer): longint;
begin
combinaison := factorielle(q) div (factorielle(p) * factorielle(q - p));
end;
var
n: integer;
p, q: integer;
begin
clrscr;
write('Entrez le nombre de ligne du triangle de Pascal a afficher : ');
readln(n);
for q := 0 to n do
begin
p := 0;
while (p <= q) do
begin
write(combinaison(p, q): 7);
p := p + 1;
end;
writeln;
end;
readln;
end.
pirate- Entier Naturel
- Nombre de messages : 28
Réputation : 0
Points : 6447
Date d'inscription : 30/03/2007
Sujets similaires
» cours/exercice sous-programmes (algorithme+pascal)
» [résolu]factorielle
» fonction factorielle
» Programmes TV par mail
» Logiciel de désinstallation de programmes: Revo Uninstaller
» [résolu]factorielle
» fonction factorielle
» Programmes TV par mail
» Logiciel de désinstallation de programmes: Revo Uninstaller
Forum INFOMATH :: Enseignement de l'informatique :: Informatique - Collège & Lycée :: Exercices Pascal
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum