mise à jour des fichiers
git-svn-id: http://cregut.svn.enseeiht.fr/2020/1sn/pim/projets/GH-05@213640 e13453a9-b01f-0410-a051-f404c4f0c485
This commit is contained in:
parent
50aa021dd4
commit
25f2182ca6
213
src/google.adb
Normal file
213
src/google.adb
Normal file
|
@ -0,0 +1,213 @@
|
|||
package body Google is
|
||||
|
||||
package body Naif is
|
||||
|
||||
function "*"(left : Vector_Element.T_Vecteur; right : T_Google) return Vector_Element.T_Vecteur is
|
||||
vec: Vector_Element.T_Vecteur;
|
||||
c: T_Reel;
|
||||
begin
|
||||
for i in 0..N-1 loop
|
||||
c := 0.0;
|
||||
for j in 0..N-1 loop
|
||||
c := c + left(j)*right(j,i);
|
||||
end loop;
|
||||
vec(i) := c;
|
||||
end loop;
|
||||
return vec;
|
||||
end "*";
|
||||
|
||||
procedure initialize(mat: in out T_Google; value: in T_Reel) is
|
||||
begin
|
||||
for i in 0..N-1 loop
|
||||
for j in 0..N-1 loop
|
||||
mat(i,j) := value;
|
||||
end loop;
|
||||
end loop;
|
||||
end initialize;
|
||||
|
||||
procedure create_H(mat: in out T_Google; file: in Ada.Text_IO.File_Type) is
|
||||
row, col: Natural;
|
||||
nc: Natural := 0;
|
||||
nl: Natural := 0;
|
||||
begin
|
||||
for i in 0..N_Links-1 loop
|
||||
get(file, row);
|
||||
get(file, col);
|
||||
mat(row, col) := 1.0;
|
||||
end loop;
|
||||
|
||||
for i in 0..N-1 loop
|
||||
for j in 0..N-1 loop
|
||||
exit when mat(i, j) /= 0.0;
|
||||
if j = N-1 then
|
||||
nl := nl + 1;
|
||||
end if;
|
||||
end loop;
|
||||
end loop;
|
||||
put("lignes vides = "); put(nl, 1);
|
||||
new_line;
|
||||
|
||||
for j in 0..N-1 loop
|
||||
for i in 0..N-1 loop
|
||||
exit when mat(i, j) /= 0.0;
|
||||
if i = N-1 then
|
||||
nc := nc + 1;
|
||||
end if;
|
||||
end loop;
|
||||
end loop;
|
||||
put("colonnes vides = "); put(nc, 1);
|
||||
new_line;
|
||||
|
||||
end create_H;
|
||||
|
||||
procedure create_S(mat: in out T_Google) is
|
||||
sum: T_Reel;
|
||||
begin
|
||||
for i in 0..N-1 loop
|
||||
sum := 0.0;
|
||||
for j in 0..N-1 loop
|
||||
sum := sum + mat(i,j);
|
||||
end loop;
|
||||
|
||||
if sum /= 0.0 then
|
||||
for j in 0..N-1 loop
|
||||
if mat(i,j) /= 0.0 then
|
||||
mat(i,j) := 1.0/sum;
|
||||
end if;
|
||||
end loop;
|
||||
else -- sum == 0 then
|
||||
for j in 0..N-1 loop
|
||||
mat(i,j) := 1.0/T_Reel(N);
|
||||
end loop;
|
||||
end if;
|
||||
end loop;
|
||||
end create_S;
|
||||
|
||||
procedure create_G(mat: in out T_Google; alpha: in T_Reel) is
|
||||
begin
|
||||
for i in 0..N-1 loop
|
||||
for j in 0..N-1 loop
|
||||
mat(i,j) := alpha*mat(i,j) + (1.0-alpha)/T_Reel(N);
|
||||
end loop;
|
||||
end loop;
|
||||
end create_G;
|
||||
|
||||
procedure create_Google(mat: in out T_Google; alpha: in T_Reel; file: in Ada.Text_IO.File_Type) is
|
||||
begin
|
||||
|
||||
create_H(mat, file);
|
||||
create_S(mat);
|
||||
create_G(mat, alpha);
|
||||
|
||||
end create_Google;
|
||||
|
||||
procedure put(mat: in T_Google) is
|
||||
begin
|
||||
for i in 0..N-1 loop
|
||||
for j in 0..N-1 loop
|
||||
put(mat(i,j));
|
||||
end loop;
|
||||
new_line;
|
||||
end loop;
|
||||
end put;
|
||||
|
||||
end Naif;
|
||||
|
||||
|
||||
|
||||
package body Creux is
|
||||
|
||||
procedure create_Google(mat: in out T_Google; file: in out Ada.Text_IO.File_Type) is
|
||||
row, col: Natural;
|
||||
offset: Natural;
|
||||
begin
|
||||
|
||||
initialize(mat.Rows, 0);
|
||||
initialize(mat.Cols, -1);
|
||||
|
||||
for i in 0..N_Links-1 loop
|
||||
get(file, row);
|
||||
get(file, col);
|
||||
mat.rows(row+1) := mat.rows(row+1) + 1;
|
||||
end loop;
|
||||
|
||||
repartition(mat.rows);
|
||||
|
||||
reset(file, In_File);
|
||||
skip_line(file);
|
||||
|
||||
for i in 0..N_Links-1 loop
|
||||
get(file, row);
|
||||
get(file, col);
|
||||
|
||||
if row = N then
|
||||
offset := 0;
|
||||
else
|
||||
offset := mat.rows(row+1) - mat.rows(row);
|
||||
end if;
|
||||
|
||||
for j in 0..offset loop
|
||||
|
||||
exit when mat.cols(mat.rows(row)+j) = col; -- anti-doublon
|
||||
|
||||
if mat.cols(mat.rows(row)+j) = -1 then
|
||||
mat.cols(mat.rows(row)+j) := col;
|
||||
exit;
|
||||
end if;
|
||||
|
||||
end loop;
|
||||
|
||||
end loop;
|
||||
|
||||
end create_Google;
|
||||
|
||||
procedure put(mat: in T_Google) is
|
||||
begin
|
||||
put("rows:");
|
||||
for i in 0..N loop
|
||||
put(mat.rows(i));
|
||||
end loop;
|
||||
new_line; new_line;
|
||||
put("cols:");
|
||||
for i in 0..N_Links-1 loop
|
||||
put(mat.cols(i));
|
||||
end loop;
|
||||
end put;
|
||||
|
||||
function calcul(vec: in Vector_Element.T_Vecteur; mat: in T_Google; alpha: in T_Reel) return Vector_Element.T_Vecteur is
|
||||
new_vec: Vector_Element.T_Vecteur;
|
||||
nb_col: Natural;
|
||||
index_col: Integer;
|
||||
begin
|
||||
|
||||
initialize(new_vec, sum(vec)*(1.0-alpha)/T_Reel(N));
|
||||
|
||||
for i in 0..N-1 loop
|
||||
|
||||
nb_col := mat.rows(i+1) - mat.rows(i);
|
||||
|
||||
if nb_col = 0 then
|
||||
|
||||
for j in 0..N-1 loop
|
||||
new_vec(j) := new_vec(j) + alpha*vec(i)/T_Reel(N);
|
||||
end loop;
|
||||
|
||||
else
|
||||
|
||||
for j in mat.rows(i)..mat.rows(i+1)-1 loop
|
||||
index_col := mat.cols(j);
|
||||
if index_col /= -1 then -- anti calcul d'un doublon
|
||||
new_vec(index_col) := new_vec(index_col) + alpha*vec(i)/T_Reel(nb_col);
|
||||
end if;
|
||||
end loop;
|
||||
|
||||
end if;
|
||||
|
||||
end loop;
|
||||
|
||||
return new_vec;
|
||||
end calcul;
|
||||
|
||||
end Creux;
|
||||
|
||||
end Google;
|
80
src/google.ads
Normal file
80
src/google.ads
Normal file
|
@ -0,0 +1,80 @@
|
|||
with Vector;
|
||||
with Ada.Text_IO; use Ada.Text_IO;
|
||||
with Ada.Integer_Text_IO; use Ada.Integer_Text_IO;
|
||||
|
||||
-- tester de mettre le generic ici ?
|
||||
|
||||
package Google is
|
||||
|
||||
generic
|
||||
|
||||
-- N peut être supprimé et recup direct grace vecteur_element
|
||||
N: Positive;
|
||||
N_Links: Positive;
|
||||
|
||||
-- Vecteur contenant les élements du même type que la matrice
|
||||
with package Vector_Element is new Vector.Reel(<>);
|
||||
|
||||
package Naif is
|
||||
|
||||
use Vector_Element;
|
||||
use Vector_Element.Text_T_Reel;
|
||||
|
||||
type T_Google is array (0..N-1, 0..N-1) of T_Reel;
|
||||
|
||||
-- permet d'initialiser la matrice avec pour tout i,j, mat[i, j] = value
|
||||
procedure initialize(mat: in out T_Google; value: in T_Reel);
|
||||
|
||||
-- permet la création de la matrice de Google, voir l'énoncé
|
||||
procedure create_Google(mat: in out T_Google; alpha: in T_Reel; file: in Ada.Text_IO.File_Type);
|
||||
|
||||
-- permet le produit vecteur-matrice
|
||||
function "*"(left: Vector_Element.T_Vecteur; right: T_Google) return Vector_Element.T_Vecteur;
|
||||
|
||||
-- permet l'affiche de la matrice
|
||||
procedure put(mat: in T_Google);
|
||||
|
||||
end Naif;
|
||||
|
||||
|
||||
|
||||
generic
|
||||
|
||||
-- idem ici
|
||||
N: Positive;
|
||||
N_Links: Positive;
|
||||
|
||||
-- Vecteur contenant les élements du même type que la matrice
|
||||
with package Vector_Element is new Vector.Reel(<>);
|
||||
|
||||
package Creux is
|
||||
|
||||
use Vector_Element;
|
||||
use Vector_Element.Text_T_Reel;
|
||||
|
||||
package Vector_Rows is
|
||||
new Vector.Entier(T_Entier => Natural, Capacite => N+1);
|
||||
package Vector_Cols is
|
||||
new Vector.Entier(T_Entier => Integer, Capacite => N_Links);
|
||||
|
||||
use Vector_Rows;
|
||||
use Vector_Cols;
|
||||
|
||||
-- on définit le type T_Google correspondant à une matrice CSC
|
||||
type T_Google is record
|
||||
rows: Vector_Rows.T_Vecteur;
|
||||
cols: Vector_Cols.T_Vecteur;
|
||||
end record;
|
||||
|
||||
-- permet de créer la matrice à partir du réseau
|
||||
procedure create_Google(mat: in out T_Google; file: in out Ada.Text_IO.File_Type);
|
||||
|
||||
-- permet faire le ~produit vecteur-matrice
|
||||
function calcul(vec: in Vector_Element.T_Vecteur; mat: in T_Google; alpha: in T_Reel) return Vector_Element.T_Vecteur;
|
||||
|
||||
-- permet l'affichage de la matrice, voir l'article wikiepdia pour comprendre format
|
||||
procedure put(mat: in T_Google);
|
||||
|
||||
end Creux;
|
||||
|
||||
end Google;
|
|
@ -1,65 +0,0 @@
|
|||
with Ada.Text_IO; use Ada.Text_IO;
|
||||
with Ada.Integer_Text_IO; use Ada.Integer_Text_IO;
|
||||
|
||||
package body Google_Creux is
|
||||
|
||||
procedure create_H(mat: in out T_Google; network: in Vector_Link.T_Vecteur) is
|
||||
row, col: Natural;
|
||||
row_last: Natural;
|
||||
nb: Integer := 1;
|
||||
begin
|
||||
|
||||
mat.rows(N) := N_links;
|
||||
mat.rows(0) := network(0).from;
|
||||
mat.cols(0) := network(0).to;
|
||||
row_last := mat.rows(0);
|
||||
|
||||
for i in 1..N_links-1 loop
|
||||
row := network(i).from;
|
||||
col := network(i).to;
|
||||
mat.cols(i) := col;
|
||||
for j in 1..row-row_last loop
|
||||
mat.rows(nb) := i;
|
||||
nb := nb + 1;
|
||||
end loop;
|
||||
row_last := row;
|
||||
end loop;
|
||||
|
||||
end create_H;
|
||||
|
||||
procedure put(mat: in T_Google) is
|
||||
begin
|
||||
for i in 0..N_links-1 loop
|
||||
put(mat.cols(i));
|
||||
end loop;
|
||||
new_line; new_line;
|
||||
for i in 0..N loop
|
||||
put(mat.rows(i));
|
||||
end loop;
|
||||
end put;
|
||||
|
||||
function calcul(vec: in Vector_Element.T_Vecteur; mat: in T_Google; alpha: in T_Element) return Vector_Element.T_Vecteur is
|
||||
new_vec: Vector_Element.T_Vecteur;
|
||||
nb_col: Natural := 0;
|
||||
col_CRS: Natural := 0;
|
||||
col_vec: Natural := 0;
|
||||
begin
|
||||
Vector_Element.initialize(new_vec, Vector_Element.sum(vec)*(1.0-alpha)/T_Element(N));
|
||||
for i in 0..N-1 loop
|
||||
nb_col := mat.rows(i+1) - mat.rows(i);
|
||||
if nb_col = 0 then
|
||||
for j in 0..N-1 loop
|
||||
new_vec(j) := new_vec(j) + alpha*vec(i)/T_Element(N);
|
||||
end loop;
|
||||
else
|
||||
for j in 1..nb_col loop
|
||||
col_vec := mat.cols(col_CRS);
|
||||
new_vec(col_vec) := new_vec(col_vec) + alpha*vec(i)/T_Element(nb_col);
|
||||
col_CRS := col_CRS + 1;
|
||||
end loop;
|
||||
end if;
|
||||
end loop;
|
||||
return new_vec;
|
||||
end calcul;
|
||||
|
||||
end Google_Creux;
|
|
@ -1,37 +0,0 @@
|
|||
with Vector;
|
||||
|
||||
generic
|
||||
|
||||
type T_Element is digits <>;
|
||||
N: Positive;
|
||||
N_Links: Positive;
|
||||
|
||||
with package Vector_Natural is
|
||||
new Vector.Entier(Capacite => N);
|
||||
|
||||
with package Vector_Element is
|
||||
new Vector.Digit(T_Digit => T_Element, Capacite => N, Vector_Entier => Vector_Natural);
|
||||
|
||||
with package Vector_Link is
|
||||
new Vector.Link(Capacite => N_Links);
|
||||
|
||||
package Google_Creux is
|
||||
|
||||
type T_Rows is array (0..N) of Natural;
|
||||
type T_Cols is array (0..N_links-1) of Natural;
|
||||
type T_Google is record
|
||||
cols: T_Cols;
|
||||
rows: T_Rows;
|
||||
end record;
|
||||
|
||||
-- permet de créer la matrice à partir du réseau
|
||||
procedure create_H(mat: in out T_Google; network: in Vector_Link.T_Vecteur);
|
||||
|
||||
-- permet faire le produit vecteur-matrice
|
||||
function calcul(vec: in Vector_Element.T_Vecteur; mat: in T_Google; alpha: in T_Element) return Vector_Element.T_Vecteur with
|
||||
Pre => alpha > 0.0 and alpha < 1.0;
|
||||
|
||||
-- permet l'affichage de la matrice, voir l'article wikiepdia pour comprendre format
|
||||
procedure put(mat: in T_Google);
|
||||
|
||||
end Google_Creux;
|
|
@ -1,79 +0,0 @@
|
|||
package body Google_Naive is
|
||||
|
||||
function "*"(left : Vector_Element.T_Vecteur; right : T_Google) return Vector_Element.T_Vecteur is
|
||||
vec: Vector_Element.T_Vecteur;
|
||||
c: T_Element;
|
||||
begin
|
||||
for i in 0..N-1 loop
|
||||
c := 0.0;
|
||||
for j in 0..N-1 loop
|
||||
c := c + left(j)*right(j,i);
|
||||
end loop;
|
||||
vec(i) := c;
|
||||
end loop;
|
||||
return vec;
|
||||
end "*";
|
||||
|
||||
procedure initialize(mat: in out T_Google) is
|
||||
begin
|
||||
for i in 0..N-1 loop
|
||||
for j in 0..N-1 loop
|
||||
mat(i,j) := 0.0;
|
||||
end loop;
|
||||
end loop;
|
||||
end initialize;
|
||||
|
||||
procedure create_H(mat: in out T_Google; network: in Vector_Link.T_Vecteur) is
|
||||
row, col: Integer;
|
||||
begin
|
||||
for i in 0..N_Links-1 loop
|
||||
row := network(i).from;
|
||||
col := network(i).to;
|
||||
mat(row, col) := 1.0;
|
||||
end loop;
|
||||
end create_H;
|
||||
|
||||
procedure create_S(mat: in out T_Google) is
|
||||
sum: T_Element;
|
||||
begin
|
||||
for i in 0..N-1 loop
|
||||
sum := 0.0;
|
||||
for j in 0..N-1 loop
|
||||
sum := sum + mat(i,j);
|
||||
end loop;
|
||||
|
||||
if sum /= 0.0 then
|
||||
for j in 0..N-1 loop
|
||||
if mat(i,j) /= 0.0 then
|
||||
mat(i,j) := 1.0/sum;
|
||||
end if;
|
||||
end loop;
|
||||
else -- sum == 0 then
|
||||
for j in 0..N-1 loop
|
||||
mat(i,j) := 1.0/T_Element(N);
|
||||
end loop;
|
||||
end if;
|
||||
end loop;
|
||||
end create_S;
|
||||
|
||||
procedure create_G(mat: in out T_Google; alpha: in T_Element) is
|
||||
begin
|
||||
for i in 0..N-1 loop
|
||||
for j in 0..N-1 loop
|
||||
mat(i,j) := alpha*mat(i,j) + (1.0-alpha)/T_Element(N);
|
||||
end loop;
|
||||
end loop;
|
||||
end create_G;
|
||||
|
||||
procedure put(mat: in T_Google) is
|
||||
use Text_T_Element;
|
||||
begin
|
||||
for i in 0..N-1 loop
|
||||
for j in 0..N-1 loop
|
||||
put(mat(i,j));
|
||||
end loop;
|
||||
new_line;
|
||||
end loop;
|
||||
end put;
|
||||
|
||||
end Google_Naive;
|
|
@ -1,47 +0,0 @@
|
|||
with Ada.Text_IO; use Ada.Text_IO;
|
||||
with Vector;
|
||||
|
||||
generic
|
||||
|
||||
type T_Element is digits <>;
|
||||
N: Positive;
|
||||
N_Links: Positive;
|
||||
|
||||
-- on a besoin de ce type Vector_Element
|
||||
with package Vector_Natural is
|
||||
new Vector.Entier(Capacite => N);
|
||||
|
||||
-- on a besoin de ce type pour le produit vecteur-matrice
|
||||
with package Vector_Element is
|
||||
new Vector.Digit(T_Digit => T_Element, Capacite => N, Vector_Entier => Vector_Natural);
|
||||
|
||||
-- on a besoin de ce type pour la création de H
|
||||
with package Vector_Link is
|
||||
new Vector.Link(Capacite => N_Links);
|
||||
|
||||
package Google_Naive is
|
||||
|
||||
-- on permet l'affichage direct des T_Element
|
||||
package Text_T_Element is
|
||||
new Ada.Text_IO.Float_IO(Num => T_Element);
|
||||
|
||||
type T_Google is array (0..N-1, 0..N-1) of T_Element;
|
||||
|
||||
function "*"(left: Vector_Element.T_Vecteur; right: T_Google) return Vector_Element.T_Vecteur;
|
||||
|
||||
procedure initialize(mat: in out T_Google);
|
||||
|
||||
-- On place des 1 dans la matrice à partir du réseau.
|
||||
procedure create_H(mat: in out T_Google; network: in Vector_Link.T_Vecteur);
|
||||
|
||||
-- On transforme H pour obtenir S
|
||||
procedure create_S(mat: in out T_Google);
|
||||
|
||||
-- On transforme S pour obtenir G
|
||||
procedure create_G(mat: in out T_Google; alpha: in T_Element) with
|
||||
Pre => alpha > 0.0 and alpha < 1.0;
|
||||
|
||||
-- permet l'affiche de la matrice
|
||||
procedure put(mat: in T_Google);
|
||||
|
||||
end Google_Naive;
|
95
src/quicksort.adb
Normal file
95
src/quicksort.adb
Normal file
|
@ -0,0 +1,95 @@
|
|||
package body Quicksort is
|
||||
|
||||
procedure sort(vec: in out Vector_Element.T_Vecteur; low: Natural := 0; high: Natural := Vector_Element.Capacite-1) is
|
||||
|
||||
procedure swap(left, right: Natural) is
|
||||
tmp : constant T_Reel := vec(left);
|
||||
begin
|
||||
vec(left) := vec(right);
|
||||
vec(right) := tmp;
|
||||
end swap;
|
||||
|
||||
pivot : constant T_Reel := vec(low);
|
||||
right : Natural := high;
|
||||
left : Natural := low;
|
||||
|
||||
begin
|
||||
if high - low > 0 then
|
||||
loop
|
||||
while left < right and pivot >= vec(left) loop
|
||||
left := left + 1;
|
||||
end loop;
|
||||
while pivot < vec(right) loop
|
||||
right := right - 1;
|
||||
end loop;
|
||||
|
||||
exit when right <= left;
|
||||
|
||||
swap(left, right);
|
||||
left := left + 1;
|
||||
right := right - 1;
|
||||
end loop;
|
||||
|
||||
if right = high then
|
||||
right := right - 1;
|
||||
swap(low, high);
|
||||
end if;
|
||||
|
||||
if left = low then
|
||||
left := left - 1;
|
||||
end if;
|
||||
|
||||
sort(vec, low, right);
|
||||
sort(vec, left, high);
|
||||
end if;
|
||||
end sort;
|
||||
|
||||
procedure sort(vec: in out Vector_Element.T_Vecteur; vec_index: in out Vector_Index.T_Vecteur;
|
||||
low: Natural := 0; high: Natural := Vector_Element.Capacite-1) is
|
||||
|
||||
procedure swap(left, right: Natural) is
|
||||
tmp : constant T_Reel := vec(left);
|
||||
tmp_index : constant T_Entier := vec_index(left);
|
||||
begin
|
||||
vec(left) := vec(right);
|
||||
vec(right) := tmp;
|
||||
vec_index(left) := vec_index(right);
|
||||
vec_index(right) := tmp_index;
|
||||
end swap;
|
||||
|
||||
pivot : constant T_Reel := vec(low);
|
||||
right : Natural := high;
|
||||
left : Natural := low;
|
||||
|
||||
begin
|
||||
if high - low > 0 then
|
||||
loop
|
||||
while left < right and pivot >= vec(left) loop
|
||||
left := left + 1;
|
||||
end loop;
|
||||
while pivot < vec(right) loop
|
||||
right := right - 1;
|
||||
end loop;
|
||||
|
||||
exit when right <= left;
|
||||
|
||||
swap(left, right);
|
||||
left := left + 1;
|
||||
right := right - 1;
|
||||
end loop;
|
||||
|
||||
if right = high then
|
||||
right := right - 1;
|
||||
swap(low, high);
|
||||
end if;
|
||||
|
||||
if left = low then
|
||||
left := left - 1;
|
||||
end if;
|
||||
|
||||
sort(vec, vec_index, low, right);
|
||||
sort(vec, vec_index, left, high);
|
||||
end if;
|
||||
end sort;
|
||||
|
||||
end Quicksort;
|
22
src/quicksort.ads
Normal file
22
src/quicksort.ads
Normal file
|
@ -0,0 +1,22 @@
|
|||
with Vector;
|
||||
|
||||
generic
|
||||
|
||||
-- Vecteur contenant les élements du même type que la matrice
|
||||
with package Vector_Element is new Vector.Reel(<>);
|
||||
|
||||
-- Vecteur contenant des élements de type entier
|
||||
with package Vector_Index is new Vector.Entier(<>);
|
||||
|
||||
package Quicksort is
|
||||
|
||||
use Vector_Element;
|
||||
use Vector_Index;
|
||||
|
||||
procedure sort(vec: in out Vector_Element.T_Vecteur;
|
||||
low: Natural := 0; high: Natural := Vector_Element.Capacite-1);
|
||||
|
||||
procedure sort(vec: in out Vector_Element.T_Vecteur; vec_index: in out Vector_Index.T_Vecteur;
|
||||
low: Natural := 0; high: Natural := Vector_Element.Capacite-1);
|
||||
|
||||
end Quicksort;
|
147
src/test_tri.adb
147
src/test_tri.adb
|
@ -1,147 +0,0 @@
|
|||
with Ada.Text_IO; use Ada.Text_IO;
|
||||
-- with Ada.Integer_Text_IO; use Ada.Integer_Text_IO;
|
||||
|
||||
with Vector;
|
||||
|
||||
procedure test_tri is
|
||||
|
||||
--Type T_Double is digits 6;
|
||||
N: constant Natural := 10;
|
||||
|
||||
package Vector_Entier is
|
||||
new Vector.Entier(Capacite => N);
|
||||
use Vector_Entier;
|
||||
|
||||
package Vector_Double is
|
||||
new Vector.Digit(T_Digit => Float,
|
||||
Capacite => N,
|
||||
Vector_Entier => Vector_Entier);
|
||||
use Vector_Double;
|
||||
|
||||
package Vector_Link is
|
||||
new Vector.Link(Capacite => N);
|
||||
use Vector_Link;
|
||||
|
||||
vec: Vector_Double.T_Vecteur;
|
||||
vec_natural: Vector_Entier.T_Vecteur;
|
||||
vec_index: Vector_Entier.T_Vecteur;
|
||||
vec_link: Vector_Link.T_Vecteur;
|
||||
|
||||
begin
|
||||
|
||||
vec(0) := 10.0;
|
||||
vec(1) := 1.0;
|
||||
vec(2) := 21.0;
|
||||
vec(3) := 3.0;
|
||||
vec(4) := 13.0;
|
||||
vec(5) := 56.0;
|
||||
vec(6) := 3.0;
|
||||
vec(7) := 5.0;
|
||||
vec(8) := 6.0;
|
||||
vec(9) := 6.0;
|
||||
|
||||
new_line;
|
||||
|
||||
put_line("avant:");
|
||||
put(vec); new_line;
|
||||
|
||||
quicksort(vec);
|
||||
|
||||
put_line("après:");
|
||||
put(vec); new_line;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
vec_natural(0) := 10;
|
||||
vec_natural(1) := 1;
|
||||
vec_natural(2) := 21;
|
||||
vec_natural(3) := 3;
|
||||
vec_natural(4) := 13;
|
||||
vec_natural(5) := 2855059;
|
||||
vec_natural(6) := 3;
|
||||
vec_natural(7) := 5;
|
||||
vec_natural(8) := 6;
|
||||
vec_natural(9) := 6;
|
||||
|
||||
new_line;
|
||||
|
||||
put_line("avant:");
|
||||
put(vec_natural); new_line;
|
||||
|
||||
quicksort(vec_natural);
|
||||
|
||||
put_line("après:");
|
||||
put(vec_natural); new_line;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
vec(0) := 10.0;
|
||||
vec(1) := 1.0;
|
||||
vec(2) := 21.0;
|
||||
vec(3) := 3.0;
|
||||
vec(4) := 13.0;
|
||||
vec(5) := 56.0;
|
||||
vec(6) := 3.0;
|
||||
vec(7) := 5.0;
|
||||
vec(8) := 6.0;
|
||||
vec(9) := 6.0;
|
||||
identity(vec_index);
|
||||
|
||||
new_line;
|
||||
|
||||
put_line("double avant:");
|
||||
put(vec); new_line;
|
||||
|
||||
put_line("index avant:");
|
||||
put(vec_index); new_line;
|
||||
|
||||
quicksort(vec, vec_index);
|
||||
|
||||
put_line("double après:");
|
||||
put(vec); new_line;
|
||||
|
||||
put_line("index après:");
|
||||
put(vec_index); new_line;
|
||||
|
||||
|
||||
vec_link(0) := T_Link'(10, 15);
|
||||
vec_link(1) := T_Link'(1, 155);
|
||||
vec_link(2) := T_Link'(0, 153);
|
||||
vec_link(3) := T_Link'(32, 155);
|
||||
vec_link(4) := T_Link'(0, 153);
|
||||
vec_link(5) := T_Link'(15, 158);
|
||||
vec_link(6) := T_Link'(0, 135);
|
||||
vec_link(7) := T_Link'(0, 8);
|
||||
vec_link(8) := T_Link'(40, 7);
|
||||
vec_link(9) := T_Link'(0, 112);
|
||||
|
||||
put_line("links avant:");
|
||||
put(vec_link); new_line;
|
||||
|
||||
quicksort(vec_link);
|
||||
|
||||
put_line("links après:");
|
||||
put(vec_link); new_line;
|
||||
|
||||
declare
|
||||
package Vector_Entier is
|
||||
new Vector.Entier(Capacite => N);
|
||||
package Vector_Double is
|
||||
new Vector.Digit(T_Digit => Float,
|
||||
Capacite => N,
|
||||
Vector_Entier => Vector_Entier);
|
||||
package Vector_Link is
|
||||
new Vector.Link(Capacite => N);
|
||||
|
||||
use Vector_Double;
|
||||
use Vector_Entier;
|
||||
use Vector_Link;
|
||||
begin
|
||||
null;
|
||||
end;
|
||||
|
||||
end test_tri;
|
Loading…
Reference in a new issue