Transcript Document

Множини та їх властивості.
Означення
Множина – cтруктурований тип даних,
який зберігає не значення елементу, а
його наявність.
 Приклади: картотека фільмів, книжки в
бібліотеці:фантастика, історичні романи,
поеми тощо.
 Елементи в множині не повторюються
 Елемент може належати або не належати
множині

Означення

Множина - це бітове поле (256 бітів), в
якому біт=1 якщо елемент присутній в
множині та =0 у прот. випадку.
0
1
0
1
1
0
2
3
…
…
0
0
0
255
- 2 елемента в множині, наприклад число 11221
Тип BYTE 0…255
 Тип CHAR #0…#255 – номери символів в
ASCII – таблиці

Типи множин та позначення в
програмі.
Множина в Delphi складається з
перелічуваних типів або типів користувача.
 Приклад типу користувача:
type color=(red,yellow,green);
Var i:color;
begin For i:=red to green do {тіло циклу};

Опис в програмі
VAR
<ім’я множини>:set of <тип
елементів множини>;
Наприклад:
VAR symbol:set of char;
number:set of byte;
Опис множини при передачі в
підпрограму

Type <ім’я типу>=set of <тип елементів>;
var <ім’я множини>:< ім’я типу >;
Наприклад:
Type
Tsymbol=set of char;
Tnumber=set of byte;
var
number: Tnumer; sym:Tsymbol;

Введення та виведення множин
Безпосередньо вводити множину із
вхідного потоку та виводити у вихідний
потік заборонено!
 READLN (F, number[i]);
 WRITELN (F, number);

Введення множин
В програмі множина може бути
задана т.ч.:
VAR M:set of byte; N:set of char;
Begin
M:=[1,2,3]; M:=[1,5..13];
N:=[‘a’..’z’]; {до 255 елементів}
V:=[ ] {без пробілу всередині – пуста
множина}
Операції над множинами – арифметичні:
1.
Об’єднання
С:=A+B
2.
Різниця множин
С:=А\B
3.
Перетин множин
С:=А*B
A
B
Операції над множинами – логічні:
1.
IN – перевірка наявності елемента
в множині, бінарна операція
<елемент> in <множина> (boolean)
2.
Підмножиною A множини B є така
множина, елементи якої повністю
входять в множину B
B
A<=B
A
Операції над множинами – логічні:
3.
Надмножина
B>=A
B
A
A=B – всі елементи
співпадають
5. A<>B – хоча б один елемент не
співпадає
4.
[1..3]>=[ 1..2]
[1,2]=[1..2]
[2..3]<>[1..2]
Конвертація

[ S[i] ] – конвертація в множину i-го
елементу рядка S
Задачі із використанням множин
1.
2.
3.
4.
5.
Контроль перемикання клавіатури на
різні мови
Контроль вмикання клавіши Caps Lock
Комбінаторика
Обчислювальна геометрія
Графи
Створити множину букв деякого слова.
Function str_set(S:string):Tsymbol;
var i:word; symbol:Tsymbol;
Begin
Symbol:=[];
For i:=1 to length(S) do
Symbol:= Symbol+[S[i]];
str_set:=Symbol;
End;
Вивести множину у вихідний потік.
Procedure write_set(Symbol:Tsymbol);
var i:byte; F:text;
Begin
assign(F, ‘output.txt’); rewrite(F);
For i:=0 to 255 do
If chr(i) in Symbol then
write (F,chr(i)); close(f);
End;
Знайти в тексті всі слова, в яких K
голосних букв
Множина голосних букв:
Gol:=[‘a’,’e’,’i’,’y’,’o’,’u’] – латиниця!
1. Виділяємо слово в рядку.
2. Підраховуємо, скільки в слові
голосних букв: if (s[i] in Gol) then
inc(count);
3. Порівнюємо цю кількість із заданою у
вхідному файлі (K)
Знайти в тексті всі числа у 15-ковій
системі числення.
Множина цифр у 15-й системі числення:
S15:=[‘0’..’9’,’A’..’E’];
Виділити слово.
Створимо множину символів даного
слова.
3. Якщо ця множина є підмножиною даної
множини, то це 15-кова цифра.
1.
2.