- •Курс «основы алгоритмизации и программирования»
- •Тема: «организация данных в множества»
- •1. Понятие и определение множества в теории множеств.
- •2. Понятие и обозначение множества в Паскале.
- •3. Определение множественного типа.
- •4. Операции над множествами.
- •5. Использование множеств в программах.
- •6. Индивидуальные задания.
- •Контрольные вопросы
- •Тема: «организация данных в множества»
- •- Страница 6 -
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. |
Написать программу, формирующую случайным образом два числовых множества и определяющую, в каком отношении находятся эти множества. |