Множественный тип данных А+В А*В
Множество - конечная совокупность элементов, принадлежащих некоторому базовому типу. Базовый тип –перечислимые типы данных, символьный и байтовый типы или диапазонные типы на их основе. Каждый объект в множестве называется элементом множества.
Множество Количество элементов множества называется его мощностью и не превышает 256. Элемент множества занимает в памяти 1 байт.
Описание множества Type = Set of ; Var : ; или Var : Set of ;
Пример описания Type mnog_Char=Set of Char; Var mn1: Set of Char; mn2: mnog_Char; mn3: Set of A..Z; s1: Set of Byte; s2: Set of (A,O,E); s3: Set of ;
Пример описания Typedigit = Set of 1..5; Vars: digit; Переменная s может принимать значения, состоящие из любой совокупности целых чисел от 1 до 5. Количество различных значений переменной s – 32. Перечислим их:
Задание элемента множества в программе [] – пустое множество; [1],[2],[3],[4],[5] – одноэлементные множества; [1,2],[1,3],[2,4][4,5] – двухэлементные множества; ……………………………………………. [1,2,3,4,5] – множество всех элементов базового типа
Операции над множествами Объединением двух данных множеств называется множество элементов, принадлежащих обоим этим множествам. Знак операции объединения множеств в Паскале «+». Примеры: 1. [A, F]+[B, D]=[A, B, D, F]; 2. S1:=[1..5,9], S2:=[3..7,12], S=S1+S2=[1..7,9,12]
Операции над множествами Пересечением двух множеств называется множество элементов, принадлежащих одновременно и первому, и второму множеству. Знак операции пересечения множеств в Паскале «*». Пример: 1. [A, F]*[B, D]=[ ] 2. [1..3, 5, 7, 11]*[3..8, 10, 12, ]=[3, 5, 7];
Операции над множествами Разностью двух множеств называется множество, состоящее из тех элементов первого множества, которые не являются элементами второго. Знак операции вычитания множеств «-». Пример: 1. [A, F]- [B, D]=[A, F] 2. [1..3, 5, 7, 11]-[3..8, 10, 12, ]=[1..2, 11]; 3. A1:=[A..Z]; A1:=A1 – [A]=[B..Z].
Операции над множествами Операция определения принадлежности элемента множеству. Эта логическая операция обозначается служебным словом in. Результат операции имеет значение true, если элемент входит в множество, и false в противном случае. Пример: 1. 5 in [3..7] имеет значение true; 2. a in [A..Z] имеет значение false.
Операции над множествами Операцию проверки принадлежности удобно использовать в подобных случаях: Оператор вида if (ch=a) or (ch=b) or (ch=x) or (ch=y) then s; с использованием множеств переписывается в if ch in [a, b, x, y] then s;
Операции над множествами Для сравнения множеств используются операции отношения: = проверка на равенство (совпадение) двух множеств; проверка на неравенство двух множеств; =, > проверка на вхождение второго множества в первое.
Пример1. Пример1. Подсчитать количество цифр в тексте и вывести разные цифры из текста. var c,z:set of char; k,I,b:byte; s:string; p;char; begin z:=[ ]; c:=[0..9]; b:=0; readln(s); k:=length(s); for i:=1 to k do if s[i] in c then begin z:=z+[s[i]]; inc(b); end; writeln(кол цифр =,b); writeln(разные цифры); for p:=0 to 9 do if p in z then write(p:2); end.
Пример2. «Решето Эратосфена» Пример2. Составить программу поиска простых чисел в промежутке [1..N]. «Решето Эратосфена» var m:set of byte; i,k,n:integer; begin readln(n); m:=[2..n]; for k:=2 to n div 2 do for i:=2 to n do if (i mod k=0) and (ik) then m:=m-[i]; for i:=1 to n do if i in m then write(i, ); end.
Задания для самостоятельного решения Составить программу выделения следующих множеств из множества целых чисел от 1 до 30: множества чисел, кратных 2; множества чисел, кратных 3; Из первых двух множеств создать множество чисел, кратных 6; множество чисел, кратных 2 или 3; множество чисел, делящихся на 3, но неделящихся на 2.