Введение в программирование. Сортировка массива. Средства создания программ. Стандартные модули. Структурированные типы данных, страница 3

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 ], ‘ ‘);