«Программирование с использованием множеств» Delphi. Тема 8:
«Программирование с использованием множеств» План темы: 1. Понятие множества и его назначение в программировании. 2. Описание множеств в программе. 3. Операции над множествами. 4. Примеры программирования с использованием множеств.
Множество – это структурированный тип данных, состоящий из неупорядоченного набора различных однотипных элементов. Элементами множества могут быть данные типов char (символ) или byte (целое число от 0 до 255). Максимальное количество элементов в множестве равно 256. В программировании множества упрощают запись сложных условий.
Для определения переменных типа множество используется следующий формат: : set of ; Примеры: Var m1: set of char; m2: set of byte; m3: set of (a..z); m4: set of (1,3,5,7,9);
Формирование множества. Примеры: //Множество всех русских букв: m1:=[а..я]+[A..Я]; //Множество прописных гласных русских букв: m1:=[а,о,э,у,е,ё,ы,и,ю,я]; //Пустое множество: m2:=[]; //Множество четных чисел: for i:=0 to 127 do m2:=m2+[2*i];
Добавление элемента в множество. Примеры: Include(m1,i); //или то же самое: m1:=m1+[i]; Удаление элемента из множества. Примеры: Exclude(m2,0); //или то же самое: m2:=m2-[0];
Объединение множеств (C:=A+B) - множество C состоит из элементов, входящих или в A или в B. Пример: A:=[0,1,3]; B:=[2..5]; C:=A+B; //множество C будет равно [0..5]. Разность множеств (C:=A-B) - множество C состоит из элементов множества A, не входящих в множество B. Пример: A:=[0..5]; B:=[2,4,6]; C:=A-B; //множество C будет равно [0,1,3,5].
Пересечение множеств (C:=A*B) - множество C состоит из элементов, одновременно входящих в A и в B. Пример: A:=[0..3]; B:=[2..5]; C:=A*B; //множество C будет равно [2,3]. Проверка равенства множеств (A=B) - результат равен TRUE, если множества A и B состоят из одних и тех же элементов. Пример: A:=[5,3,1]; B:=[1,5,3]; If A=B then …; //результат проверки TRUE.
Проверка неравенства множеств (AB) - результат равен TRUE, если множества A и B состоят из различных элементов. Пример: A:=[0,1,3]; B:=[0,1]; If AB then… // результат проверки TRUE. Проверка подмножества (A
Проверка надмножества (A>=B) - результат равен TRUE, если все элементы множества B являются элементами множества A. Пример: A:=[0,1,3]; B:=[0,1]; If A>=B then… // результат проверки TRUE. Проверка принадлежности (x in A) - результат равен TRUE, если элемент x входит в множество A. Пример: A:=[5,3,1]; x:=3; If x in A then …; //результат проверки TRUE.
1. Задана строка текста на русском языке. Выписать все гласные буквы (прописными, в алфавитном порядке, не повторяясь), которые входят в данный текст. var s1,s2: string; m1,m2: set of char; i: integer; c: char; Begin {…Ввод строки s1} s1:=AnsiLowerCase(s1); m1 := [а,о,э,у,е,ё,ы,и,ю,я]; s2:=; m2:=[]; For i := 1 to length(s1) do If s1[i] in m1 then Include(m2,s1[i]); For c:=а to я do If c in m2 then s2:=s2+c; {…Вывод s2} End.
2. Заданы массивы A и B целых чисел со значением элементов от 0 до 255. Построить массив C, состоящий из тех чисел, которые есть и в A и в B.B. var A,B,C:array[1..256] of Byte; mA,mB,mC: set of Byte; i,j,n,m: Integer; Begin {…Ввод n,m,A,B. n – кол-во эл. в A, m – в кол-во эл. в B.} mA:=[]; mB:=[]; mC:=[]; For i := 1 to n do Include(mA, A[i]); For i := 1 to m do Include(mB, B[i]); mC:=mA*mB; j:=0; For i:=0 to 255 do If i in mC then begin j:=j+1; C[j]:=i; end; {…Вывод С.} End.