- •Алгоритмы и структуры данных
- •Введение
- •1.1. Практикум по теме
- •Индивидуальные задания к темам «Хеш-таблицы» и «Деревья двоичного поиска»
- •1.2. Требования к отчёту
- •1.3. Контрольные вопросы
- •2. Деревья двоичного поиска
- •2.2. Требования к отчёту
- •2.3. Контрольные вопросы
- •2.1. Практикум по теме
- •Варианты вида дерева для реализации в теме «Деревья двоичного поиска»
- •3. Поддержка произвольной последовательности в структуре данных для множеств
- •3.1. Практикум по теме
- •Индивидуальные задания к теме «Последовательности»
- •3.2. Требования к отчёту
- •3.3. Контрольные вопросы
- •4. Работа с иерархией объектов: наследование и полиморфизм
- •4.1. Учебная программа «Библиотека фигур»
- •4.2. Практикум по теме
- •Коллекция дополнительных фигур
- •Продолжение табл. 4.1
- •Окончание табл. 4.1
- •Индивидуальные задания к теме «Наследование и полиморфизм»
- •4.3. Требования к отчёту
- •4.4. Контрольные вопросы
- •5. Поддержка обработки исключительных ситуаций
- •5.1. Практикум по теме
- •5.2. Требования к отчёту
- •5.3. Контрольные вопросы
- •6. Использование стандартной библиотеки шаблонов
- •6.1. Практикум по теме
- •6.2. Требования к отчёту
- •6.3. Контрольные вопросы
- •7. Курсовая работа. Измерение временной сложности алгоритма
- •7.1. Пример программы для эксперимента
- •7.2. Обработка результатов эксперимента
- •7.3. Оформление результатов эксперимента
- •7.4. Выводы
- •Список литературы
- •Приложение Измерение времени запросом внутреннего счётчика тактов процессора
- •Содержание
- •197376, С.-Петербург, ул. Проф. Попова, 5
4.2. Практикум по теме
В табл. 4.1 собрана коллекция фигур, которыми можно дополнить рассмотренную прикладную программу.
Таблица 4.1
Коллекция дополнительных фигур
№ п/п |
Наименование |
Вид |
Отражение |
Поворот |
1 |
Прямоугольник |
|
Нет |
Да |
2 |
Квадрат |
|
Нет |
Нет |
Продолжение табл. 4.1
№ п/п |
Наименование |
Вид |
Отражение |
Поворот |
3 |
Ромб |
|
Нет |
Нет |
4 |
Параллелограмм |
|
Да |
Да |
5 |
Трапеция |
|
Да |
Да |
6 |
Крест |
|
Нет |
Нет |
7 |
Косой крест |
|
Нет |
Нет |
8 |
Треугольник |
|
Да |
Да |
9 |
Кружок |
|
Нет |
Нет |
10 |
Квадрат с крестом |
|
Нет |
Нет |
11 |
Ромб с крестом |
|
Нет |
Нет |
Окончание табл. 4.1
№ п/п |
Наименование |
Вид |
Отражение |
Поворот |
12 |
Кружок с крестом |
|
Нет |
Нет |
13 |
Треугольник с крестом |
|
Да |
Да |
14 |
Зачёркнутый квадрат |
|
Нет |
Нет |
15 |
Зачёркнутый кружок |
|
Нет |
Нет |
16 |
Зачёркнутый треугольник |
|
Да |
Да |
Для некоторых фигур возможны поворот на 90o вправо или влево или отражение относительно горизонтальной и/или вертикальной оси симметрии, причём для части из них имеются обе возможности. Некоторые фигуры строятся как составные из более простых. Эти идеи можно отобразить показанной на рис. 4.2 иерархией классов.
Доработать учебную программу: добавить в коллекцию ещё одну фигуру, номер которой указан в табл. 4.2. Для этой фигуры нужно будет определить подходящее место в иерархии классов и написать необходимые функции-члены. Функции-члены, использование которых не предполагается, можно определить так, чтобы они были недоступны. Разработанной фигурой нужно дополнить картинку в указанных в варианте позициях. Позиция 1 обозначает галстук или воротник, 2 и 3 — бакенбарды, 4 и 5 — уши, 6 — кокарду, 7 и 8 — рога, 9 — нос, 10 и 11 — глаза, 12 — шляпу в целом (см. рис. 4.3). Возможно, некоторые из фигур нужно будет повернуть или отразить. Для примыкании фигур должны использоваться их габаритные точки.
Рис.
4.2. Фрагмент
иерархии классов фигур
Рис.
4.3.
Позиции на результате работы программы
для возможной вставки дополнительной
фигуры
Таблица 4.2
