.
..
ex01a.adb (download) (view)
ex01b.adb (download) (view)
ex02a.adb (download) (view)
ex02b.adb (download) (view)
ex03a.adb (download) (view)
ex03b.adb (download) (view)
ex04a.adb (download) (view)
ex04b.adb (download) (view)
ex05a.adb (download) (view)

with Ada.Text_Io, Ada.Integer_Text_Io;
use Ada.Text_Io, Ada.Integer_Text_Io;

-- Calcul de Cnp
-- Cnp = n! / (p! * (n - p)!) = (n * (n - 1) * ... * (n - p + 1)) / p!
-- Cnp = (n / 1) * ((n - 1) / 2) * ((n - 2) / 3) * ... * ((n - p + 1) / p)
procedure Ex01b is
   N, P : Natural;
   Res : Natural;
begin
   -- saisies
   Put("Veuillez rentrer deux nombres >= 0 avec n >= p : ");
   Get(N); Get(P);

   -- Algo :
   --- Cnp = n! / (p! * (n - p)!)
   --- Cnp = (n * (n - 1) * ... * (n - p + 1)) / p!
   --- Cnp = (n / 1) * ((n - 1) / 2) * ((n - 2) / 3) * ... * ((n - p + 1) / p)
   Res := 1;
   for I in 1 .. P loop
      Res := Res * (N - I + 1);
      Res := Res / I;
   end loop;

   -- Affichage du résultat
   Put("C("); Put(N, 0); Put(")("); Put(P, 0); Put(" ) = "); Put(Res, 0);
end;
 
Webmaster : pierrefrancois.leon@laposte.net

Valid XHTML 1.0 Strict Valid CSS!