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

5. Использование множеств в программах.

Принятая в вычислительной технике двоичная форма представления информации позволяет эффективно реализовать как представление в памяти самих множеств, так и выполнение операций над ними. Множество в Паскале имеет внутреннее представление в виде строки битов, где каждый элемент базового типа множества представлен одним битом: отсутствие элемента в множестве обозначается нулем, а его присутствие – единицей. Например, пусть задана переменная множественного типа

var h: set of [red, yellow, green, blue];

Тогда значение этой переменной, равное

[red, yellow, green, blue], представлено битовой строкой ‘1111’;

[red, yellow, green], представлено битовой строкой ‘1110’;

[red, yellow], представлено битовой строкой ‘1100’;

[yellow], представлено битовой строкой ‘0100’.

В конкретных реализациях размер множества обычно ограничен размером одного или нескольких машинных слов (в Турбо Паскале размер множества не может превышать 256 элементов). Поэтому в качестве базового типа множества может использоваться только порядковый тип, область допустимых значений которого меньше указанного числа, и к элементам множества применимы функции ORD,SUCC,PRED, определяющие их расположение в упорядоченном множестве значений базового типа.

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

(ch = ‘a’) or (ch = ‘e’) or (ch = ‘i’) or (ch = ‘o’) or (ch = ‘u’) or (ch = ‘y’)

можно написать более простое и понятное:

ch in [‘a’, ‘e’, ‘i’, ‘o’, ‘u’, ‘y’].

6. Индивидуальные задания.

варианта

З А Д А Н И Е

1.

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

2.

Дан текст из цифр и латинских букв. Определить, каких букв – гласных (a, e, i, o, u, y) или согласных – больше в этом тексте.

3.

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

4.

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

5.

Дан текст, состоящий из латинских букв. Вывести все буквы, входящие в текст не менее двух раз.

6.

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

7.

Дано предложение, состоящее из латинских букв. Вывести все согласные буквы, входящие в это предложение.

8.

Вывести в возрастающем порядке все целые числа из диапазона 1 .. 1000, представимые в виде n2+m2, где n, m > 0.

9.

В некотором районе города находятся 5 продовольственных магазинов. В каждый из них завезли некоторые продукты из тех, что есть на базе: хлеб, масло, молоко, мясо, рыба, соль, сыр, сахар, чай, кофе, творог, мука. Определить, какие продукты есть во всех магазинах; какие – хотя бы в одном; каких нет нигде.

10.

Дано предложение, состоящее из латинских букв. Вывести все согласные буквы, которые входят хотя бы в одно слово.

11.

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

12.

Несколько городов одного региона обслуживает одно автотранспортное предприятие, наладившее между ними автобусные сообщения. Каждый автобус за один рейс заходит в некоторые из этих городов. Всего 5-10 рейсов. Составить программу, которая отвечала бы на вопросы: в какие города можно добраться на автобусе за один рейс, какими рейсами можно добраться из города А в город В?

13.

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

14.

Введите символьное множество. Разбейте его на три подмножества: цифры; буквы; специальные символы. Проверьте, есть ли среди них пустое множество.

15.

В тексте определить и вывести повторяющиеся гласные буквы.

16.

В группе есть студенты, увлекающиеся спортом, и студенты, увлекающиеся искусством. Определить множество студентов группы, увлекающихся и спортом и искусством.

17.

В группе есть студенты, увлекающиеся спортом, и студенты, увлекающиеся искусством. Определить множество студентов группы, которые не увлекаются ни спортом, ни искусством.

18.

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

19.

Множество S состоит из букв, которые содержатся хотя бы в одном из слов Киев, Днепропетровск, Запорожье, Севастополь. Определить, можно ли из множества S составить слово Харьков.

20.

В заданном тексте из букв латинского алфавита определить общее число вхождение в него букв a, e, c, h.

21.

Вывести в убывающем порядке все нечетные простые числа из максимально допустимого диапазона.

22.

Вывести в убывающем порядке все четные простые числа из максимально допустимого диапазона.

23.

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

24.

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

25.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]