From 394360c5df594313102768400550a11c109d6088 Mon Sep 17 00:00:00 2001 From: lfainsin Date: Sat, 19 Dec 2020 15:12:22 +0000 Subject: [PATCH] svn add vector.ad* git-svn-id: http://cregut.svn.enseeiht.fr/2020/1sn/pim/projets/GH-05@209563 e13453a9-b01f-0410-a051-f404c4f0c485 --- src/vector.adb | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++ src/vector.ads | 28 ++++++++++++++++++++++ 2 files changed, 93 insertions(+) create mode 100644 src/vector.adb create mode 100644 src/vector.ads diff --git a/src/vector.adb b/src/vector.adb new file mode 100644 index 0000000..b83ba63 --- /dev/null +++ b/src/vector.adb @@ -0,0 +1,65 @@ + +package body vector is + + procedure initialize(vec: in out T_Vecteur) is + begin + for i in 0..N-1 loop + vec(i) := 1.0/T_Element(N); + end loop; + end initialize; + + procedure initialize(vec: in out T_Vecteur_Index) is + begin + for i in 0..N-1 loop + vec(i) := i; + end loop; + end initialize; + + procedure put(vec: in T_Vecteur) is + begin + for i in 0..N-1 loop + put(vec(i)); new_line; + end loop; + end put; + + procedure put(file: in out Ada.Text_IO.File_Type; vec: in T_Vecteur) is + begin + for i in 0..N-1 loop + put(file, vec(i), 1); + new_line(file); + end loop; + end put; + + procedure put(file: in out Ada.Text_IO.File_Type; vec: in T_Vecteur_Index) is + begin + for i in 0..N-1 loop + put(file, vec(i), 1); + new_line(file); + end loop; + end put; + + procedure sort_with_index_desc(vec: in out T_Vecteur; vec_index: out T_Vecteur_Index) is + tmp_Element: T_Element; + tmp_Natural: Natural; + max: Natural; + begin + for i in 0..N-2 loop + max := i; + for j in i+1..N-1 loop + if vec(max) < vec(j) then + max := j; + end if; + end loop; + if max /= i then + tmp_Element := vec(i); + vec(i) := vec(max); + vec(max) := tmp_Element; + + tmp_Natural := vec_index(i); + vec_index(i) := vec_index(max); + vec_index(max) := tmp_Natural; + end if; + end loop; + end sort_with_index_desc; + +end vector; diff --git a/src/vector.ads b/src/vector.ads new file mode 100644 index 0000000..7d20745 --- /dev/null +++ b/src/vector.ads @@ -0,0 +1,28 @@ +with Ada.Text_IO; use Ada.Text_IO; +with Ada.Integer_Text_IO; use Ada.Integer_Text_IO; + +generic + + type T_Element is digits <>; + N: Positive; + +package Vector is + + type T_Vecteur is array (0..N-1) of T_Element; + type T_Vecteur_Index is array (0..N-1) of Natural; + + -- on permet l'affichage direct des T_Element + package Text_T_Element is + new Ada.Text_IO.Float_IO(Num => T_Element); + use Text_T_Element; + + procedure initialize(vec: in out T_Vecteur); + procedure initialize(vec: in out T_Vecteur_Index); + + procedure put(vec: in T_Vecteur); + procedure put(file: in out Ada.Text_IO.File_Type; vec: in T_Vecteur); + procedure put(file: in out Ada.Text_IO.File_Type; vec: in T_Vecteur_Index); + + procedure sort_with_index_desc(vec: in out T_Vecteur; vec_index: out T_Vecteur_Index); + +end Vector;