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

Множество (Структурированный тип данных)

- наборы однотипных логически связанных друг с другом данных.

Количество элементов от 0 до 255. Описание типа производится в разделе

TYPE <имяТипа> = SET of <базовыйТип>; множество из

или

VAR <имяПерем>: SET of <базовыйТип>;

<базовыйТип> - любой порядковый тип, из целых – только ВУТЕ (нельзя WORD, Integer, LogInt, ShortInt).

Пример:

TYPE dchar = SET of '1'..'9'; {базовый – символьный тип- диапазон}

digit=SET of 0..9; {базовый – поддиапазон типа BYTE}

VAR S1,S2,S3: dchar;

{символы}

 

S4,S5,S6,S7: digit;

{цифры}

[ ]

конструктор множества

Пример: S1:=['1','2','3'];

S4:=[0..3,7];

 

S2:=['2','1','3'];

S5:=[4,6];

 

S3:=['1','2'];S6:=[3..8]; S7:=[];

{пустое}

1

Эквивалентные множества - все их элементы одинаковы (S2 и S1).

Операции над множествами:

1.

* пересечение множеств содержит элементы, общие для обоих

 

множеств. (S4*S6 содержит [3,7];

S4*S5 образует пустое мн.).

2.

+ объединение множеств содержит элементы первого множества,

 

дополненные недостающими элементами второго.

 

S4+S5 содержит [0,1,2,3,4,6,7] S5+S6 содержит [3,4,5,6,7,8]

3.

- разность множеств содержит элементы из первого множества,

 

которые не принадлежат второму.

 

 

 

S6 - S5 содержит [3,5,7,8])

 

S4 - S5 содержит [0,1,2,3,7])

[ ]-S4 даст [ ].

 

4.

Операции отношений:

 

 

 

= операция эквивалентности

 

 

 

значение TRUE (S1= S2;

['1','2','3'] = ['2','3','1'])

<> -неэквивалентности

(TRUE для [1,2] <> [1]

S3<>S2)

<= проверка вхождения

(Пример. [1]<=[1,2]; )

 

>= проверка вхождения

 

 

 

in - операция проверки принадлежности

Бинарная операция: <выражение> in <множество>;

2

 

 

Примеры

 

Пример: 3 in S6

-TRUE;

[] in [0..5]

[] in S5

2*2 in S4

-

FALSE;

 

компактное машинное представление Недостаток: невозможность вывода множества на экран

Пример: Включить элементы во множество из входного потока до точки.

VAR

S:SET of char;{переменная-множество}

 

C:char;

элемент множества

 

Begin

 

 

 

S:=[ ]; { S := #0;} обнуление значений

{

REPEAT

{цикл до ввода ".“}

}

 

while C <> '.' do

 

 

 

begin

 

 

 

read(C);

{чтение символа в с}

 

 

S:=S+[C];

{добавление его к S}

 

 

end;

 

{

Until C = '.'

}

 

S:=S - ['.'];{исключение точки}

 

End.

3

 

Пример: Ввести два множества по пять цифр. Найти множество разности R, напечатать его элементы. Есть ли в R двоичные цифры

Program Mnog13;

 

Type

MN=set of 0..9; {множество цифр}

Var

S1, S2, R: MN;

 

i, x, y: byte;

BEGIN

s1:=[ ]; s2:=[ ];

writeln('Введи 2 множества по 5 чисел по 2 числа в строке'); for i:=1 to 5 do

 

begin

 

read(x, y);

 

s1 := s1 + [x];

 

s2 := s2 + [y];

 

end;

R:= s1-s2;

{Разность}

if R<=s1 then writeln('Разность входит в S1');

if NOT(R<=s2) then writeln('Разность не входит в S2'); for i:=0 to 9 do

if i in R then writeln('R содержит цифру - ', i) for i:=0 to 1 do

if

i in R then writeln('В R есть двоичная цифра - ', i)

 

else writeln('Двоичная цифра ', i, ' не входит в R ');

END.

4

Разработать программу c заданным индивидуальным кодом (табл.

1)в которой

-ввести два множества M1 и М2 с размерами, указанными 1 и 2 цифрами, а тип символов указан цифрой 4 в таблице 1;

-выполнить для них заданную операцию (цифра 3);

-проверить, входят ли исходные множества в результат операции, а результат в исходные множества;

-проверить, равны ли множества;

-проверить, принадлежат ли элементы, указанные буквой в коде варианта, раздельно множеству M1 или М2 и подсчитать их количество по множествам.

Наименование пунктов в коде:

Первая и вторая цифры размерность исходных множеств. 3 – операции, 4 – тип символов,

5 - буква для проверки принадлежности

5

Таблица 1

код

код

код

код

№ ва- рианта

1

1-9-1-1-е

9

4-4-3-9-j 17

4-6-5-8-d

25

5-4-1-6-h

2

2-8-2-2-b 10 5-5-4-1-f

18 3-7-6-5-m

26

5-4-1-6-i

3

3-7-3-3-k 11 6-6-5-2-c

19

2-8-1-5-g

27 6-3-3-5-m

4

4-6-4-4-о 12 9-1-6-3-h 20

5-5-2-6-i

28

7-2-4-7-c

5

5-5-5-5-n

13 8-2-1-4-n 21

6-6-3-7-b 29

8-3-5-5-g

6

6-4-6-6-i

14

7-3-2-5-d 22

4-4-4-8-n

30

6-5-6-8-b

7

7-3-1-7-n 15

6-4-3-6-h

23

3-6-5-6-i

31

1-8-1-3-e

8

8-2-2-8-a 16

5-5-4-7-c 24

2-7-6-5-k 32

2-7-2-8-f

6

Операции (третья цифра)

1)*, +

2)*, -

3)+, -

4)+, *

5)-, *

6)-, +

Тип символов во множествах (четвертая цифра) 1)Латинские прописные буквы.

2)Латинские строчные буквы.

3)Русские прописные.

4)Цифры и латинские прописные буквы

5)Любые символы ПК.

6)Русские строчные.

7)Цифры и латинские строчные буквы.

8)Цифры и любые латинские буквы.

9)Цифры и русские буквы.

7

Множество для проверки принадлежности ему заданных элементов (буква)

«а»…«f»;

a)«V»…« »;

b)латинские прописные буквы;

c)« »…«F»;

d)« »…« »;

e)латинские строчные буквы;

f)русские строчные буквы;

g)«а»…«н»;

h)«p»…«я»;

i)русские прописные буквы;

j)« »,«Ъ», «Ы», «Ь»;

k)« » …«И»;

l)все цифры;

m)1…9;

n)5…9.

ВЛ.Р.14 В модуле UNIT r_pos; исправить: вместо функции

min должна быть max - function max(d:mass):integer;

8