Forum INFOMATH
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Le Deal du moment : -55%
Friteuse sans huile – PHILIPS – Airfryer ...
Voir le deal
49.99 €

les sous programmes : Factorielle

2 participants

Aller en bas

les sous programmes : Factorielle Empty les sous programmes : Factorielle

Message par pirate Ven 30 Mar - 18:29

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.

pirate
Entier Naturel
Entier Naturel

Nombre de messages : 28
Réputation : 0
Points : 6447
Date d'inscription : 30/03/2007

Revenir en haut Aller en bas

les sous programmes : Factorielle Empty Re: les sous programmes : Factorielle

Message par methodiX Ven 30 Mar - 18:37

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;
Pour le calcul de C(n,p), je te propose:
Code:


function Combinaison(N:integer, P:integer):integer;
begin
  Combinaison := factoriel(N) div (factoriel(P)*factoriel(N-P));
end;

Note que TU DOIS UTILISER div au lieu de "/" parceque le résultat est ENTIER et non pas REEL.

J'espère que c poooo erronééééé.
Attendant la confirmation de l'admin - B.NabiL

:farao: chehya tayba
methodiX
methodiX
Admin
Admin

Masculin
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:
les sous programmes : Factorielle Left_bar_bleue1000/1000les sous programmes : Factorielle Empty_bar_bleue  (1000/1000)

Revenir en haut Aller en bas

les sous programmes : Factorielle Empty Re: les sous programmes : Factorielle

Message par pirate Ven 30 Mar - 18:52

lol! alor voila la correction lol!

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
Entier Naturel

Nombre de messages : 28
Réputation : 0
Points : 6447
Date d'inscription : 30/03/2007

Revenir en haut Aller en bas

les sous programmes : Factorielle Empty Re: les sous programmes : Factorielle

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum