cours_ada/semestre4/TP5_tri_par_tas/generer_random_integer.adb
2021-08-22 13:24:45 +02:00

60 lines
1.8 KiB
Ada

-- Avril 2014
-- Auteurs : MJ. Huguet - R. Guillerm
--
-- Mise à jour :
--
------------------------------------------------------------------------
with Ada.Text_IO; use Ada.Text_Io;
with Ada.Integer_Text_Io; use Ada.Integer_Text_Io;
with Ada.Numerics.Discrete_Random;
with Arbre_Binaire_Recherche_G;
procedure Generer_Random_Integer is
-----------------------------------------------------------------------------
-- Instanciation Arbre Binaire Générique sur des entiers
procedure Liberer_Entier(N : in out Integer) is
begin
null;
end Liberer_Entier;
function Cle(N : Integer) return Integer is
begin
return N;
end Cle;
package Arbre_Entiers is new Arbre_Binaire_Recherche_G(Integer, Integer, Cle, "<", "=", Liberer_Entier, Integer'Image);
use Arbre_Entiers;
-----------------------------------------------------------------------------
Binf, Bsup, NVal : Integer;
begin
Put("borne inf : ");Get(Binf);
Put("borne sup : ");Get(Bsup);
Put("nb valeur : ");Get(NVal);
declare
subtype Mes_Valeurs is Integer range Binf..Bsup;
package My_Random_val is new Ada.Numerics.Discrete_Random(Mes_Valeurs) ;
use My_Random_Val;
Gen : My_Random_Val.Generator;
A : Arbre;
Val : Mes_Valeurs;
Cpt : Natural := 0;
F : File_Type;
Nom : String :="data.txt";
begin
Create(F, Out_File, "data.txt");
Put_Line(F, Integer'Image(NVal));
loop
Val := My_Random_Val.Random(Gen);
if not Appartient(Val, A) then
Cpt := Cpt + 1;
Inserer(Val, A);
Put_line(F, Integer'Image(Val));
end if;
exit when Cpt = NVal;
end loop;
Close(F);
Put_Line(Arbre_To_String(A));
end;
end Generer_Random_Integer;