with Gada.Text_IO ;
with Tennis ;
procedure Mission4 is
package Ten renames Tennis ;
package Txt renames Gada.Text_IO ;
procedure Afficher(Clas : Ten.T_Classement) is
begin
for Index in Clas'Range loop
Txt.Put(Integer'Image(Index) & " : " & Clas(Index).Nom & " "
& Clas(Index).Pays & " ") ;
if Clas(Index).Move = 0 then
Txt.Put("=") ;
else
if Clas(Index).Move > 0 then
Txt.Put("+") ;
end if ;
Txt.Put(Integer'Image(Clas(Index).Move)) ;
end if ;
Txt.New_Line ;
end loop ;
end Afficher ;
function Chercher (Clas : Ten.T_Classement ; Nation : String) return Ten.T_Resultat is
Result : Ten.T_Resultat := (False, 0) ;
Trouve : Boolean := False ;
Index : Integer := 1 ;
begin
while (Index <= Clas'Last and not Trouve) loop
if Clas(Index).Pays = Nation then
Trouve := True ;
else
Index := Index + 1 ;
end if ;
end loop ;
if Trouve then
Result := (True, Index) ;
end if ;
return Result ;
end Chercher ;
procedure Tester_Chercher(Clas : Ten.T_Classement ; Orig : String) is
Reponse : Ten.T_Resultat ;
begin
Txt.New_Line ;
Txt.Put_Line("Chercher un joueur de " & Orig) ;
Reponse := Chercher(Clas, Orig) ;
if Reponse.Succes then
Txt.Put_Line(" Trouvé : " & Integer'Image(Reponse.Numero) & " " & Clas(Reponse.Numero).Nom) ;
else
Txt.Put_Line(" Introuvable.") ;
end if ;
Txt.New_Line ;
end Tester_Chercher ;
function Precede(Clas : Ten.T_Classement) return Ten.T_Classement is
Joueur_Inconnu : Ten.T_Entree := (Ten.Inconnu, "---", 0) ;
Result : Ten.T_Classement(Clas'Range) := (others => Joueur_Inconnu) ;
Nouvel_Index : Integer ;
begin
for Index in Clas'Range loop
Nouvel_Index := Index + Clas(Index).Move ;
if Nouvel_Index <= Result'Last then
Result(Nouvel_Index) := (Clas(Index).Nom, Clas(Index).Pays, 0) ;
end if ;
end loop ;
return Result ;
end Precede ;
begin
Afficher(Ten.Joueurs) ;
Afficher(Ten.Joueuses) ;
Tester_Chercher(Ten.Joueurs, "FRA") ;
Tester_Chercher(Ten.Joueurs, "USA") ;
Tester_Chercher(Ten.Joueuses, "ITA") ;
Tester_Chercher(Ten.Joueuses, "INSA") ;
Afficher(Precede(Ten.Joueurs)) ;
end Mission4 ;