Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка Програмування.doc
Скачиваний:
7
Добавлен:
19.11.2019
Размер:
742.91 Кб
Скачать

2.6. Множини

2.6.1. Теоретичні вказівки

Множини - це структурований тип даних, що містить дані одного типу. Змінна типу множина задається так: ім'я_змінної : SET OF тип; . Тип даних - скалярний (порядковий). Кількість компонентів множини не повинна перевищувати 256.

Наприклад, d:SET OF 1..100;

Значення змінної, типу множина, задається переліком конкретних значень компонентів вказаного типу, наприклад: D:=[50,15,25); D:-[1..20,34,50..60];

D:=[];. Останній оператор задає порожню множину.

Над множинами можна виконувати операції:

+ об'єднання (результат - елементи, що входять до двох множин);

* переріз (результат - спільні елементи двох множинах) ;

- різниця (результат - елементи, що є в одній множині та відсутні в іншій). Операція IN визначає, належить елемент множині чи ні. Результат операції має тип BOOLEAN. При роботі з множинами використовуються операції порівняння. Операції = , <> перевіряють, дорівнює одна множина другій чи ні. За допомогою операцій <= , >= можна визначити, чи є одна множина підмножиною іншої множини.

2.6.2. Приклад програми

Умова задачі: Задана послідовність слів, розділених пропусками. Вважаючи перше слово зразком, вибрати ті слова, які можуть бути отримані із зразка шляхом переставлення його літер

Алгоритм

1. Введення слова-зразка.

2. Створення множини символів із літер слова-зразка.

3. Введення рядка слів.

4. Поки не кінець рядка слів

4.1.Створення множини символів із літер поточного слова;

4.2.Якщо множини символів слова-зразка і поточного слова співпадають, друкується поточне слово;

4.3.Множині символів поточного слова присвоюється порожнє значення;

4.4.Повторити дії пункту 4.

5. Кінець.

type charset=set of char; { Тип множина }

var s,p:charset; { Множини літер}

st:string; str:string; {задане слово і рядок символів }

c,i,j:integer; { Робочі змінні}

begin

s:=[]; {множина символів рядка порожнє}

с:=0; {кількість літер в слові}

р:=[]; {множина символів , що є словом, порожня} writeln(Введіть слово - зразок:'); readln(st);

for i:=1 to length(st) do s:=s+[st[i]]; {множина символів слова-зразка} writeln('Введіть послідовність слів:'); readln(str);

writeln('Лаб. роб.');

writeln('Bapiaнт N30, виконав студент ');

writeln('Задане слово - зразок:'); writeln(st);

writeln('Задана послідовність слів:'); writeln(str);

writeln('Cловa, якi можуть бути отримані із зразка шляхом');

writeln('переставляння його літер:');

for i:=1 to length(str) do

begin if (str[i]<>' ') then {якщо символ не пробіл}

begin

p:=p+[str[i]j; { створення слова}

с:=с+1; {лічильник літер в слові}

end

else begin {якщо є пробіл}

if p=s {якщо множини літер слова-зразка та поточного слова співпадають}

then begin

for j:=i-c to і do write(str[j]); { друкується поточне слово} writeln(‘ ');

end;

c:=0; {рахунок літер для нового слова}

р:=[]; {множина для нового поточного слова}

end; {кінець else}

end; {кінець циклу по і}

end.