Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
33
Добавлен:
23.03.2015
Размер:
4 Кб
Скачать
☆

‘Џ…–€”€ЉЂ–€џ
 Ўбва ЄжЁЁ ¤ ­­ле
"Ќ Ў®а  楫ле зЁбҐ« intset"

intset = DATA TYPE IS create, insert, delete, member, size, choose, equal,
similar, copy

ЋЏ€‘ЂЌ€…

Ќ Ў®ал 楫ле зЁбҐ« intset - нв® ­Ґ®Ја ­ЁзҐ­­лҐ ¬ вҐ¬ вЁзҐбЄЁҐ
¬­®¦Ґбвў  楫ле зЁбҐ«. Ќ Ў®ал 楫ле зЁбҐ« €‡Њ…Ќџ…Њ›…: ®ЇҐа жЁЁ
insert Ё delete ¤®Ў®ў«пов Ё г¤ «пов жҐ«лҐ зЁб«  Ё§ ­ Ў®а .

ЋЏ…ђЂ–€€

create = PROC () RETURNS (intset)
EFFECTS ‚®§ўа й Ґв ­®ўл©, Їгбв®© ­ Ў®а intset

insert = PROC (S: intset, X: int)
MODIFIES S
EFFECTS „®Ў ў«пҐв X Є н«Ґ¬Ґ­в ¬ S; Ї®б«Ґ ¤®Ў ў«Ґ­Ёп - ў®§-
ўа й Ґв Spost = S U {X}, Ј¤Ґ Spost - нв® ­ Ў®а §­ -
祭Ё© ў S ЇаЁ ў®§ўа вҐ Ё§ insert.

delete = PROC (S: intset, X: int)
MODIFIES s
EFFECTS “¤ «пҐв X Ё§ S (в.Ґ. Spost = S - {X}).

member = PROC (S: intset, X: int) RETURNS (bool)
EFFECTS ‚®§ўа й Ґв §­ зҐ­ЁҐ true, Ґб«Ё X ф S.

size = PROC (S: intset) RETURNS (int)
EFFECTS ‚®§ўа й Ґв зЁб«® н«Ґ¬Ґ­в®ў ў S

choose = PROC (S: intset) RETURNS (int)
REQUIRES Ќ Ў®а S ­Ґ Їгбв.
EFFECTS ‚®§ўа й Ґв Їа®Ё§ў®«м­л© н«Ґ¬Ґ­в S

equal = PROC (S1, S2: intset) RETURNS (bool)
EFFECTS ‚®§ўа й Ґв §­ зҐ­ЁҐ true, Ґб«Ё S1 Ё S2 - ®¤Ё­ Ё в®в ¦Ґ
®ЎкҐЄв intset.

similar = PROC (S1, S2: intset) RETURNS (bool)
EFFECTS ‚®§ўа й Ґв §­ зҐ­ЁҐ true, Ґб«Ё s1 Ё S2 ᮤҐа¦ в ®¤Ё­ Є®ўлҐ
н«Ґ¬Ґ­вл.

copy = PROC (S: intset) RETURNS (intset)
EFFECTS ‚®§ўа й Ґв ­®ўл© ®ЎкҐЄв intset, ᮤҐа¦ йЁ© ⥠¦Ґ н«Ґ¬Ґ­вл,
зв® Ё S.

END intset

”г­ЄжЁп ЂЃ‘’ђЂЉ–€€
¤«п  Ўбва ЄжЁЁ ¤ ­­ле
"Ќ Ў®а 楫ле зЁбҐ« intset"

REP = record[ els: array[bool], other_els[int], size: int]

{====================================================================}
{ ’ЁЇЁз­л© ­ Ў®а ¤ ­­ле intset Ґбвм: {x1, x2, ..., xn} }
{--------------------------------------------------------------------}
{ ”г­ЄжЁп ЂЃ‘’ђЂЉ–€€ Ґбвм }
{ A(r) = }
{ {r.other_els[i] | low(r.other_els) <= i <= high(r.other_els)} U }
{ {j | 1 <= j <= 100 & r.els[j]} }
{--------------------------------------------------------------------}
{ ЏЋџ‘Ќ…Ќ€џ: Ќ Ў®а 楫ле зЁбҐ« ®ЇаҐ¤Ґ«пҐвбп Є Є ®ЎкҐ¤Ё­Ґ­ЁҐ ¤ўге ¬­®-}
{ ¦Ґбвў: ЇҐаў®Ґ ®ЇаҐ¤Ґ«пҐвбп н«Ґ¬Ґ­в ¬Ё, еа ­пйЁ¬Ёбп ў }
{ ¬ ббЁўҐ r.other_els (Ёе r.size ивгЄ),   ўв®а®Ґ - }
{ Ё­¤ҐЄб ¬Ё вҐе н«Ґ¬Ґ­в®ў r.els[j], §­ зҐ­Ёп Є®в®але }
{ Ґбвм true }
{====================================================================}

”г­ЄжЁп €Ќ‚Ђђ€ЂЌ’ Џђ…„‘’Ђ‚‹…Ќ€џ
¤«п  Ўбва ЄжЁЁ ¤ ­­ле
"Ќ Ў®а 楫ле зЁбҐ« intset"

REP = record[ els: array[bool], other_els[int], size: int]

€¤Ґп ¤ ­­®Ј® ЇаҐ¤бв ў«Ґ­Ёп § Є«оз Ґвбп ў ⮬, зв® ¤«п зЁбҐ« Ё§
¤Ё Ї §®­  1..100 ¬л ®в¬Ґз Ґ¬ Ёе ЇаЁ­ ¤«Ґ¦­®бвм ­ Ў®аг, § ЇЁблў п §­ -
祭ЁҐ true ў r.els[i]. Ћбв «м­лҐ §­ зҐ­Ёп § ЇЁблў овбп ў r.other_els
Є Є Ё ў ®Ўлз­®© ॠ«Ё§ жЁЁ ­  Ў §Ґ ¬ ббЁў  楫ле.

{====================================================================}
{ €Ќ‚Ђђ€ЂЌ’ Џђ…„‘’Ђ‚‹…Ќ€џ Ґбвм }
{ size(r.els)=100 & low(r.els)=1 }
{ & ўбҐ н«Ґ¬Ґ­вл r.other_els ­Ґ ЇаЁ­ ¤«Ґ¦ в ¤Ё Ї §®­г 1..100 }
{ & ў r.other_els ­Ґв ¤гЎ«ЁЄ в®ў н«Ґ¬Ґ­в®ў }
{ & size(A) = size(r.other_els) + }
{ (зЁб«® н«Ґ¬Ґ­в®ў ў r.els б® §­ зҐ­ЁҐ¬ true) }
{--------------------------------------------------------------------}
{ Џђ€Њ…—ЂЌ€…: ‡¤Ґбм A -  Ўбва Єв­л© ®ЎкҐЄв (в.Ґ. ­ Ў®а intset,   }
{ r - ®ЎкҐЄв ЇаҐ¤бв ў«Ґ­Ёп (в.Ґ. record[els Ё в.¤.]}
{====================================================================}

Соседние файлы в папке INTSET3