Unit halmazu; INTERFACE Type Tszin=(piros, feher, zold, kek, barna, sarga, fekete); Type Thalmaz=Set of Tszin; Procedure Halmazba (var halmaz:Thalmaz; elem:Tszin); {Fuggveny} Procedure Unio (var halmaz1:Thalmaz; halmaz2:Thalmaz); {Fuggveny!!} Procedure Metszet (var halmaz1:Thalmaz; halmaz2:Thalmaz); {Fuggveny!!} Procedure Kulonbseg (var halmaz1:Thalmaz; halmaz2:Thalmaz); {Fuggveny!!} Function Eleme_e (halmaz:Thalmaz; elem:Tszin):boolean; Procedure Beolvas (var halmaz:Thalmaz); Procedure Kiiras (var halmaz:Thalmaz); {Kell, mert a halmaztipus nem standard!} IMPLEMENTATION Const SzTszin:array [piros..fekete] of string=('piros', 'feher', 'zold', 'kek', 'barna', 'sarga', 'fekete'); Procedure Halmazba (var halmaz:Thalmaz; elem:Tszin); Begin halmaz:=halmaz+[elem]; End; Procedure Unio (var halmaz1:Thalmaz; halmaz2:Thalmaz); Begin halmaz1:=halmaz1+halmaz2; End; Procedure Metszet (var halmaz1:Thalmaz; halmaz2:Thalmaz); Begin halmaz1:=halmaz1*halmaz2; End; Procedure Kulonbseg (var halmaz1:Thalmaz; halmaz2:Thalmaz); Begin halmaz1:=halmaz1-halmaz2; End; Function Eleme_e (halmaz:Thalmaz; elem:Tszin):boolean; Begin Eleme_e:=elem in halmaz; End; Procedure Beolvas (var halmaz:Thalmaz); Var i:string; szoveg:String; Begin i:=Low(Tszin); While (i<=High(Tszin)) and (szoveg <> Sztszin[i]) do inc(i); If i<=fekete then halmazba(halmaz,szoveg); End; Procedure Kiiras (var halmaz:Thalmaz); Var elem:Tszin; ures:boolean; Begin ures:=True; For elem:=Low(Tszin) To High(Tszin) do If elem in halmaz Then Begin Writeln(SzTszin[elem]); ures:=false End; If ures then writeln('Ures halmaz'); End; End.