Добавил:
Upload
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:AlgStr / Библиотека / ЗАДАЧИ / INTSET3 / INTSET
.TXT‘Џ…–€”€ЉЂ–€џ
Ўбва ЄжЁЁ ¤ ле
"Ќ Ў®а 楫ле зЁбҐ« 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 Ё в.¤.]}
{====================================================================}
