Билет 22. Вопрос 1. Описание множеств в языке Pascal. Опреации над множествами.
В языке Паскаль типом-множеством называется множество-степень исходного множества объектов порядкового типа, т.е. множество возможных сочетаний объектов исходного множества. Число элементов исходного множества в Turbo Pascal не может быть больше 256, а порядковые номера элементов (т.е. значение функции Ord ) должны находиться в пределах от 0 до 255. Для задания типа-множества следует использовать зарезервированные слова set of , а затем указать элементы этого множества, как правило, в виде перечисления или диапазона, например:
type Alfa = set of ‘A' . . 'Z'; Count = set of (Plus, Minus, Mult, Divid); Ten = set of 0 . . 9; Number = set of ‘0' . . ‘9';
Введя тип-множество, можно задать переменные или типизированные константы этого типа-множества. При задании значений константе-множеству ее элементы перечисляются через запятую (допустимо указывать диапазоны) и помещаются в квадратные скобки. Например , для введенных выше типов можно задать такие переменные и типизированные константы:
var CharVal : Alfa; Operation : Count; const Index: Ten = [0, 2, 4, 6, 8]; Digit : Number = [‘0' . . ‘9'];
Примечание . Также, как и для других структурированных типов, тип-множество можно ввести непосредственно при задании переменных или типизированных констант:
var CharVal : set of ‘A' . . ‘Z'; Operation : set of (Plus, Minus, Mult, Divid); const Index: set of 0 . . 9 = [0, 2, 4, 6, 8]; Digit : set of ‘0' . . ‘9' = [‘0' . . ‘9'];
Множеству в программе можно присвоить то или иное значение. Обычно значение задается при помощи конструктора множества. Конструктор задает множество элементов с помощью перечисления в квадратных скобках выражений, значения которых дают элементы этого множества. Допустимо использовать диапазоны элементов.
Пример. Следующие структуры являются конструкторами множеств:
[Plus, Minus] [1 . . K mod 12, 15] [Chr(0) . . Chr (31), ‘ A ', ‘ B ']
В каждое множество включается и так называемое пустое множество [ ], не содержащее никаких элементов. Конструктор множества можно использовать и непосредственно в операциях над множествами.
Для множеств определены следующие операции:
Результатом операции объединения, разности или пересечения является соответствующее множество, остальные операции дают результат логического типа. Пример программы , использующей множества (Дана строка из слов, разделенных одним из символов, описанных во множестве [',', '.', '#', '*' , '&' ]. Найдите и выведите все слова-палиндромы.
program zi; uses crt; var st,str:string; i,j:integer; zz:boolean; begin clrscr; readln(str); i:=1; repeat st:=''; repeat st:=st+str[i]; i:=i+1; until (i>length(str)) or (str[i] in [',','.','#','*','&']); zz:=true; for j:=1 to trunc(length(st)/2) do if st[j]<>st[length(st)-j+1] then zz:=false; if zz=true then writeln(st); i:=i+1; until i>length(str); end |