double arrow

Лабораторная работа № 10


Тема: МНОЖЕСТВА

Цель работы: освоение приемов объявления и использование при решении задач структуры данных – множество.

Образец решения задачи.

Задача. Пусть задано множество А целых чисел. Создать множество В из элементов множества А, кратных 5. Вывести на печать множество В.

Постановка задачи.

Входные данные.

<Исходное> множествоА (множество целых чисел).

Выходные данные.

<Конечное> множество В (множество целых чисел, кратных 5).

Алгоритм.

1. Задать <Исходное> множество целых чисел.

2. Сформировать <Конечное> множество целых чисел, кратных 5.

3. Вывести на печать <Конечное> множество.

Текст программы.

Модуль 1.

unit op;

Interface

Type

tSetByte= set of byte;

Implementation

End.

Модуль 2.

unit obrabotka;

Interface

uses op;

procedure sozdanie(var BB: tSetByte; AA: tSetByte; krat: byte);

procedure print(var BB: tSetByte);

Implementation

proceduresozdanie;

Var

i: byte;

AA: mn;

Begin

BB:=[]; // создали пустое множество

for i:=0 to 255 do // для каждого значения из допустимого диапазона (тип byte)

if (iinAA)and(i mod krat =0) then // число i входит в множество AA и кратно числу krat

BB:=BB+[i]; // добавили к множеству BB множество состоящее из одного значения (число i)

end;

procedureprint;

Var

i: byte;

Begin

for i:=0 to 255 do // для каждого значения из допустимого диапазона (тип byte)

if (iinBB) then // значение i входит в множество

Write(i, ’ ’) // выводим его и пробел после

end;

End.

Основная программа.

Uses

op, obrabotka;

Var

A, B: tSetByte;

Begin

A:=[2, 4, 6, 12, 25..30, 32, 40..45, 90, 125]; // сконструировали множество из 17 элементов

sozdanie(B, A, 5); // создали множество B из элементов множества A кратных 5

print(B) // вывели элементы множества

End.

Примечание: Тип множество часто используют при решении задач на строки. Например, создают множество символов—разделителей слов для поиска начала и конца слова. Конструктор множества можно использовать в разделе констант при создании типизированных констант:

Type

tSetChar= set of char;

Const

Razdelit: tSetChar=[’ ’, ’,’, ’.’, ’!’, ’?’, ’:’, ’;’]; // символы—разделители

Задания для самостоятельного решения.

Вариант 1.

1. Пусть заданы множество А и множество В целых чисел, вывести напечатать общие элементы этих множеств.

2. Пусть задано множество А, напечатать в алфавитном порядке все элементы этого множества, входящих в множество letters=[’a’.. ’z’].

3. Дана непустая последовательность слов из строчных русских букв; между соседними словами - запятая, за последним словом - точка. Напечатать в алфавитном порядке все глухие согласные буквы, которые входят хотя бы в одно слово.

Вариант 2.

1. Пусть заданы множество А и множество В целых чисел, вывести на печать все элементы этих множеств.

2. Пусть задано множество А, напечатать в алфавитном порядке все элементы этого множества, входящих в множество letters=[’a’.. ’я’].

3. Пусть задано описание type natur=1..maxint. Написать программу, подсчитывающую количество различных (значащих) цифр в десятичной записи натурального числа n.

Вариант 3.

1. Пусть заданы множество А и множество В целых чисел, вывести на печать все элементы множества А, которые не входят в множество В.

2. Пусть задано множество А, напечатать в порядке возрастания все элементы этого множества, входящих в множество letters=[’0’.. ’9’].

3. Дана непустая последовательность слов из строчных русских букв; между соседними словами - запятая, за последним словом - точка. Напечатать в алфавитном порядке все гласные буквы, которые входят в каждое слово.

Вариант 4.

1. Пусть заданы множество А и множество В латинских букв, вывести на печать общие элементы этих множеств.

2. Пусть задано множество А, напечатать в порядке убывания все четные элементы этого множества, входящих в множество letters=[0..100].

3. Дана непустая последовательность слов из строчных русских букв; между соседними словами - запятая, за последним словом - точка. Напечатать в алфавитном порядке все глухие согласные буквы, которые входят хотя бы в одно четное слово.

Вариант 5.

1. Пусть заданы множество А и множество В целых чисел, вывести на печать все элементы множества В, которые не входят в множество А.

2. Пусть задано множество А, напечатать в алфавитном порядке все согласные буквы этого множества, входящих в множество letters=[’a’.. ’я’].

3. Дан текст из строчных латинских букв, за которым следует точка. Напечатать все буквы, входящие в текст по одному разу.

Вариант 6.

1. Пусть заданы множества А, В, С, вывести на печать общие элементы всех множеств.

2. Пусть задано множество А, напечатать в порядке убывания все элементы кратные 3 этого множества, входящих в множество letters=[10..200].

3. Дана непустая последовательность слов из строчных русских букв; между соседними словами - запятая, за последним словом - точка. Напечатать в алфавитном порядке все звонкие согласные буквы, которые входят более чем в одно слово.

Вариант 7.

1. Пусть заданы множества А, В, С, вывести на печать все элементы этих множеств.

2. Написать программу, печатающую в возрастающем порядке все цифры, не входящие в десятичную запись натурального числа n.

3. Дан текст из строчных латинских букв, за которым следует точка. Напечатать все буквы, входящие в текст не менее двух раз.

Вариант 8.

1. Пусть заданы множества А, В, С, вывести на печать все элементы, входящие во множество А, но не входящие во множества В и С.

2. Пусть задано множество letters=[2..100]. Необходимо сформировать новое множество из элементов заданного, кратных 3 или 5.

3. Дана непустая последовательность слов из строчных русских букв; между соседними словами - запятая, за последним словом - точка. Напечатать в алфавитном порядке все звонкие согласные буквы, которые входят в каждое слово.

Вариант 9.

1. Пусть заданы множества А, В, С, вывести на печать все общие элементы множеств С и А, но не входящие во множество В.

2. Пусть заданы множества А, В, С, вывести на печать все элементы, входящие во множества А и В, но не входящие во множество С.

3. Пусть задано множество А, напечатать в порядке возрастания все элементы кратные 5 этого множества, входящих в множество letters=[5..200].

Вариант 10.

1. Пусть заданы множества А, В, С, вывести на печать все общие элементы множеств С и В, но не входящие во множество А.

2. Пусть задано множество А, напечатать в порядке убывания все элементы кратные 7 этого множества, входящих в множество letters=[15..100].

3. Дан текст из строчных русских букв, за которым следует точка. Напечатать все гласные буквы, входящие в текст более двух раз.

Примечание: гласные буквы – а, е, и, о, у, ы, э, ю, я (ė обычно не входит в литерный тип); согласные – все остальные буквы, кроме й, ь, ъ; звонкие согласные – б, в, г, д, ж, з, л, м, н, р; глухие согласные – к, п, с, т, ф, х, ц, ч, ш, щ.

Контрольные вопросы:

1. Может быть базовым типом, тип integer?

2. Может ли быть базовым типом, тип char?

3. Как определить базовый тип?

4. Если задано описание set of 1...3; какие значения может принимать переменная такого множественного типа?

5. Пусть chars1:=[ ’a’, ’x’, ’e’]; chars2:=[’x’]; chars3:=[ ’a’..’z’];

Определите истинность высказываний: а). chars1 < > chars2; б). chars1 >= chars2; в). chars1 <= chars3 ; г). ’a’inchars1; д). not (‘q’inchars2).

6. Какие из следующих конструкций являются множествами (в смысле языка Паскаль), а какие нет и почему?

(1) [9,6,3,0];

(2) [2..3,5,7];

(3) [1..15,4..18];

(4) [’*’, ’*’];

(5) [0..0];

(6) [true..false];

(7) [2,sgrt(9)];

(8) [’=’, ’>=’, ’>’];

(9) [[ ],[5]];

7. Вычислите значения выражений:

(1) [1, 3, 5]*[2, 4];

(2) [1, 3, 5]+[2, 4];

(3) [1, 3, 5]-[2, 4];



Сейчас читают про: