Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПР_Паскаль.doc
Скачиваний:
31
Добавлен:
05.09.2019
Размер:
672.26 Кб
Скачать

Var имя_множества: имя_типа;

  1. Var имя_множества: Set Of базовый тип;

Исходя из особенностей внутреннего представления множеств, можно сделать два основных вывода:

  • в множестве не может быть одинаковых элементов, что согласуется и с нашими математическими знаниями;

  • все операции над множествами выполняются значительно эффективней, чем над другими структурами данных.

Нельзя вводить значения во множественную переменную оператором ввода и выводить оператором вывода. Множественная переменная может получить конкретное значение только в результате выполнения оператора присваивания следующего формата:

< множественная переменная > := < множественное выражение >

Пример: A := [50, 100, 150, 200]; B := [′m′, ′n′, ′ k′]; C := [True, False]; D := A;

Кроме того, выражения могут включать в себя операции над множествами.

При работе с множествами допускается использование следующих операций:

  • отношения (=, <>, >=, <=);

  • объединения множеств (+);

  • пересечения множеств (*);

  • разности множеств (-);

  • проверка принадлежности элемента множеству (in).

2. Выполните следующие упражнения:

Задания уровня 1

Упражнение 1. Пусть дана строка символов с точкой в конце строки. Необходимо определить число различных букв, входящих в данную строку.

1. Наберите текст программы:

Program Mn1;

Var

M: Set Of Char;

Str: String;

c: Char;

i, n: Integer;

Begin

M:=[]; { M – пустое множество}

n:=0; {переменная, считающая количество различных букв в строке}

WriteLn (′Введите строку′);

ReadLn (Str); {ввод строки}

For i:=1 To Length (Str) Do

If not (Str[i] In M) Then

Begin

M:=M+[Str[i]]; {формирование множества, содержащего все буквы, входящие в строку}

n:=n+1;

End;

WriteLn (′Количество различных элементов в строке равно′, n)

End.

2. Запустите программу на выполнение и проверьте её работу: Ctrl-F9

3. Для просмотра результатов выполненной программы необходимо нажать: Alt-F5

4. Сохраните программу на своем диске: <F2> A:\P9PR1

Упражнение 2. Даны две символьные строки, содержащие только строчные латинские буквы. Построить строку S3, в которую войдут только общие символы S1 и S2 в алфавитном порядке и без повторений.

1. Наберите текст программы:

Program P2;

Type Mset=Set of ‘a’..’z’;

Var S1, S2, S3: String;

MS1, MS2, MS3 : Mset;

C: Char;

Procedure SM (S: String; Var MS: Mset);

{Процедуры формируют множество MS, содержащее все символы строки S }

Var I Byte;

Begin MS:=[];

For I:=1 To Length (S) Do

MS:=MS+[S[I]]

End;

Begin {Ввод исходных строк}

ReadLn (S1); ReadLn (S2);

{Формирование множеств MS1 и MS2 из символов строк S1 и S2}

SM (S1, MS1); SM (S2, MS2);

{Пересечение множеств – выделение общих элементов в множество MS3}

MS3:=MS1*MS2;

{Формирование результирующей строки S3}

S3:=’’;

For C:=’a’ To ‘z’ Do

If C In MS3 Then S3:=S3+C;

WriteLn (‘Результат:’S3)

End.

2. Запустите программу на выполнение и проверьте её работу: Ctrl-F9

3. Для просмотра результатов выполненной программы необходимо нажать: Alt-F5

4. Сохраните программу на своем диске: <F2> A:\P9PR2