with Gada.Text_IO ;
procedure Mission2 is
package Txt renames Gada.Text_IO ;
type T_Intervalle is record
Inf : Float ;
Sup : Float ;
end record ;
function Intervalle_Image(A : T_Intervalle) return String is
begin
return "[" & Integer'Image(Integer(A.Inf)) & "," & Integer'Image(Integer(A.Sup)) & "]" ;
end Intervalle_Image ;
function Est_Inclus (A : T_Intervalle ; B : T_Intervalle) return Boolean is
begin
return A.Inf >= B.Inf and A.Sup <= B.Sup ;
end Est_Inclus ;
function Disjoints (A : T_Intervalle ; B : T_Intervalle) return Boolean is
begin
return A.Sup < B.Inf or A.Inf > B.Sup ;
end Disjoints ;
procedure Afficher_Relation (A : T_Intervalle ; B : T_Intervalle) is
begin
if Est_Inclus(A, B) then
Txt.Put_Line(Intervalle_Image(A) & " est inclus dans " & Intervalle_Image(B)) ;
elsif Est_Inclus(B,A) then
Txt.Put_Line(Intervalle_Image(B) & " est inclus dans " & Intervalle_Image(A)) ;
elsif Disjoints(A,B) then
Txt.Put_Line(Intervalle_Image(A) & " et " & Intervalle_Image(B) & " sont disjoints.") ;
else
Txt.Put_Line(Intervalle_Image(A) & " et " & Intervalle_Image(B) & " ne sont pas disjoints.") ;
end if ;
end Afficher_Relation ;
type T_Prod is record
Gauche : T_Intervalle ;
Droite : T_Intervalle ;
end record ;
function Prod_Image(A : T_Prod) return String is
begin
return Intervalle_Image(A.Gauche) & " x " & Intervalle_Image(A.Droite) ;
end Prod_Image ;
function Prod_Est_Inclus (A : T_Prod ; B : T_Prod) return Boolean is
begin
return Est_Inclus (A.Gauche, B.Gauche) and Est_Inclus(A.Droite, B.Droite) ;
end Prod_Est_Inclus ;
function Prod_Disjoints (A : T_Prod ; B : T_Prod) return Boolean is
begin
return Disjoints(A.Gauche, B.Gauche) or Disjoints(A.Droite, B.Droite) ;
end Prod_Disjoints ;
procedure Prod_Afficher_Relation (A : T_Prod ; B : T_Prod) is
begin
if Prod_Est_Inclus(A, B) then
Txt.Put_Line(Prod_Image(A) & " est inclus dans " & Prod_Image(B)) ;
elsif Prod_Est_Inclus(B,A) then
Txt.Put_Line(Prod_Image(B) & " est inclus dans " & Prod_Image(A)) ;
elsif Prod_Disjoints(A,B) then
Txt.Put_Line(Prod_Image(A) & " et " & Prod_Image(B) & " sont disjoints.") ;
else
Txt.Put_Line(Prod_Image(A) & " et " & Prod_Image(B) & " ne sont pas disjoints.") ;
end if ;
end Prod_Afficher_Relation ;
C : constant T_Intervalle := (5.0, 10.0) ;
D : constant T_Intervalle := (7.0, 8.0) ;
E : constant T_Intervalle := (4.0, 6.0) ;
begin
Afficher_Relation(C,D) ;
Afficher_Relation(D,C) ;
Afficher_Relation(C,E) ;
Afficher_Relation(D,E) ;
Prod_Afficher_Relation((C, C), (D, D)) ;
Prod_Afficher_Relation((C, D), (D, C)) ;
Prod_Afficher_Relation((D, C), (E, C)) ;
end Mission2 ;