6.ТИП ДАННЫХ МНОЖЕСТВА. В Pascale допускаются только конечные множества, все элементы множества должны принадлежать данному типу. Тип элемента множества называется базовым типом, и может быть любым порядковым типом, за исключением типа Wordколичество элемента множества не должно превышать 255. Множество не содержащие одного элемента называются пустым множеством. Множество может быть описана в разделе типов type <имя типа>=set. Of <тип элемента>; Элементы множества могут быть перечислены или заданы типом диапазон в квадратных скобках Пример: var M:set of char; M:=[‘,’,’.’,’!’,’?’,’;’,’:’].
Операции над множеством: 1. Объединение обозначается знаком ‘+’, результатом объединения содержит все элементы, принадлежащие к каждому из множеств операций. C:=A+B; A:=[7,8,1,3 B:=[9,1,11]. C:=[7,8,1,3,9,11]; 2. Перечисление содержит те элементы, которые принадлежат и множеству. А и множеству В. C:=A*B; A:=[7,8,1,3]. B:=[9,1,11]. C:=[1]; 3. Разность множеств А и В это все элементы принадлежащие множеству В. C:=A-B; A:=[7,8,1,9]. B:=[9,1,11]. C:= А-В-[7,8,3]; И наоборот. С:B-A. C:=[9,11]. Для множеств определены операции отношения: (1) проверка эквивалентности множеств. Возвращает истину если множество эквивалентно. И ложь в противном случае. A:=[‘,’,’.’,’!’,’?’]. B:=[‘?’,’!’,’,’,’!’]. A=B (2) не эквивалентность < >. Проверка возвращает истина, если множество не эквивалентно. И ложь если множество эквивалентно. A< > B A:=[7,8,1]. B:=[1,8,]. (3) Проверка вхождения А<=B возвращает истина если множество А входит в множество В.И наоборот только множество В в множество А. А >=В. Проверка вхождения элемента заданная множеством in C in A- истина. Пример: Заданная во множество. В удалить все числа кратные 2.
Var B: set of 1.....100;
I: byte; Begin B:=[1...30];
For i:=1 to 100 do. If (i in B) and (i mod 2=0) then
B:=b-[i]; For=i:=1 to 100 do If i in B then write (i,’ ‘0; Writeln. End.
8. ПОИСК ЭЛЕМЕНТА МАССИВА. Все задачи по обработке массивов решаются с использованием циклов. Если необходимо прервать выполнение циклов досрочно, нужно использовать процедуру BREAK. Для продолжения следующей итерации использ-ся процедура CONTINUE. Пр-р: Найти в списке студента Иванова. Вывести на экран с указанием порядкового номера в списке.
Program PRPOISK
TYPE MAS: array [1..6] of string;
Const spisok: MAS = (‘Ефимов’, ‘Петров’, ‘Сидоров’, ‘Иванов’, ‘Ким’, ‘Пак’);
VAR k, i: integer; b; boolean;
Begin b:= true;
For i:=1 to 6 do
If spisok [ i ]=’Иванов’ then
Begin Writeln (‘поиск закончен’);
Writeln ( i:2, ‘ ‘, spisok [ i ]); b:= false break end;
If b then writeln (‘ Иванова нет в списке’);
Readln;
END.
Сдвиги элементов массива вправо, влево. 1. Циклическийсдвигвправо. VAR A: MAS [1..10] of Word;
P:=A [10]
For i:=10 downto 2 do
A [ i ]:=A [ i-1 ]; A[ 1 ]:=p;
For j:=1 to k do begin
P:=A[10];
For i:=10 downto 2 do
A [ i ]:=A [ i-1 ]; A[1]:=p;
End;
2. Циклический сдвиг влево. P:=A[1];
For i:=1 to 9 do
A[ i ]:=A [i+1]; A[10]:=p;
End;
Алгоритм вставки элемента. Пр-р: В массиве, состоящем из 6-ти элементов, вставить на к-тое место элемент =N
For i:=6 downto k do
A [i+1]:=a[ i ]; A[k]:=N;
For i:=1 to 7 do
Write (A[ i ], ‘ ‘);
Удаление элемента из массива. Пр-р: Удалить из массива, состоящего из 7 элементов, элемент с номером K.
Program PR_DEL1;
USES CRT;
VAR A: array [1..7] of integer
K, i: byte;
Begin randomize;
Write (‘введите k’); read (k);
For i:=1 to 7 do begin A[ i ]:=random(10);
Writeln (A[ i ], ‘ ‘); end;
For i:=k to 6 do A[ i+1];
Writeln;
For i:=1 to 6 do
Write (A [ i ], ‘ ‘);
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.