Bonjour,
J'ai un problème je ne comprends pas pourquoi mon code ne marche pas, ou plutot pourquoi ma procedure du tri et ma fonction de la recherche ne s'appliquent pas, lors de la compilation on me dit :
"M is never assigned a value" (et pour "N", "X" et "Trouve" également)
Le probleme vient certainement des variables, mais je n'arrive pas a comprendre pourquoi.
C'est pourquoi je fais appel a vous, merci d'avance
Voici mon code :
____________________________
WITH Gnat.IO;
USE Gnat.IO;
WITH Ada.Numerics.Discrete_Random;
PROCEDURE A1 IS
TYPE Type_Vecteur IS ARRAY (1 .. 10) OF Integer;
T : Type_Vecteur;
M : Integer;
N : Integer;
Tmp : Integer;
I : Integer;
Y : Integer;
X : Integer;
Trouve : Boolean;
-- TRI A BULLES
PROCEDURE Trib (
T : IN OUT Type_Vecteur;
M,
N : IN Integer) IS
Tri : Boolean;
BEGIN
I := N;
Tri := False;
WHILE (I > M AND NOT Tri) LOOP
Tri := True;
FOR J IN M .. I-1 LOOP
IF (T(J) > T(J+1)) THEN
Tmp := T(J);
T(J) := T(J+1);
T(J+1) := Tmp;
Tri := False;
END IF;
END LOOP;
I := I-1;
END LOOP;
END Trib;
-- RECHERCHE SEQUENTIELLE
FUNCTION Rechercher (
T : IN Type_Vecteur;
N,
X : IN Integer)
RETURN Integer IS
Position : Integer;
Trouve : Boolean;
BEGIN
I := 1;
Position := -1;
Trouve := False;
WHILE (I = N AND NOT Trouve) LOOP
IF (T(I) = X) THEN
Trouve := True;
Position := I;
ELSE
I := I+1;
END IF;
END LOOP;
RETURN Position;
END Rechercher;
-- TIRAGE ALEATOIRE
PROCEDURE Note_Aleatoire (
Nbalea : OUT Integer) IS
TYPE Numero IS RANGE 0 .. 20;
PACKAGE Aleatoire IS NEW Ada.Numerics.Discrete_Random(Numero);
USE Aleatoire;
Num : Numero;
Generateur : Generator;
BEGIN
Reset(Generateur);
Num:=Random(Generateur);
Put("Note Aleatoire = ");
Nbalea:=Integer(Num);
Put(Nbalea);
END Note_Aleatoire;
BEGIN
FOR Z IN 1..5 LOOP
Note_Aleatoire(T(Z));
New_Line;
END LOOP;
New_Line;
Y := Rechercher(T,N,X);
Put ("Recherche sequentielle");
Trib(T,M,N);
Put ("Tri a Bulles");
FOR W IN 1..5 LOOP
New_Line;
Put("-->");
New_Line;
Put(T(W));
New_Line;
END LOOP;
END A1;
________________________________
Partager