soluce5.adb

Pour télécharger ce fichier, clic-droit sur ce lien : soluce5.adb
with Gada.Text_IO ;
with Rois ;

procedure Mission5 is
   
   package Txt renames GAda.Text_IO ;
   
   -- Afficher la liste de tous les rois
   procedure Tout_Afficher is
   begin
      for No in 1..Rois.Nb_Rois loop
	 Txt.Put_Line(Rois.Nom(No) & " " & Integer'Image(Rois.Debut(No)) & " -" & Integer'Image(Rois.Fin(No))) ;
      end loop ;
   end Tout_Afficher ;
   
   -- Trouver le numéro du roi ayant régné le plus longtemps
   function Plus_Long return Integer is
      -- Duree maximale observée
      Duree_Max : Integer := 0 ;
      
      -- Numéro du roi avec la durée maximale
      Numero_Max : Integer ;
      
      -- Variable intermédiaire pour le calcul de la durée de règne.
      Duree : Integer ;
   begin
      for No in 1..Rois.Nb_Rois loop
	 Duree := Rois.Fin(No) - Rois.Debut(No) ;
	 if Duree > Duree_Max then
	    Duree_Max := Duree ;
	    Numero_Max := No ;
	 end if ;
      end loop ;
      return Numero_Max ;
   end Plus_Long ;
   
   
   -- Variable pour stocker le résultat de la fonction
   -- (permet de n'invoquer la fonction qu'une seule fois au lieu de trois)
   LongRoi : Integer ;
   
begin
   
   Tout_Afficher ;
   
   LongRoi := Plus_Long ;
   Txt.Put_Line("Le roi ayant régné le plus longtemps est : " & Rois.Nom(LongRoi)
		  & " de " & Integer'Image(Rois.Debut(LongRoi))
		  & " a " & Integer'Image(Rois.Fin(LongRoi))) ;
   
end Mission5 ;