Содержание
Практика
Перед очной защитой, все задания выкладываются на Stepik и, где это возможно, организуются автоматические проверки. До защиты работы, все проверки должны быть пройдены
Создание и разрушение объектов
- Stepik
Наследование
Индивидуальные задания, проверяемые на Stepik c помощью peer-review. Варианты заданий:
- Окружность, пятиугольник, правильный пятиугольник
- Прямоугольник, квадрат, эллипс
- Равнобедренный треугольник, квадрат, прямоугольный треугольник
- Трапеция, эллипс, равнобедренная трапеция
- Эллипс, сектор эллипса, параллелограмм
- Треугольник, ромб, параллелограмм
- Дуга, окружность, эллипс
- Квадрат, ромб, трапеция
- Пятиугольник, пентаграмма, прямоугольник
- Пятиугольник, эллипс, отрезок
- Прямоугольник, окружность, трапеция
Контейнер
Разработать шаблонный контейнер с заданным интерфейсом
Умный указатель
Разработать умный указатель с заданным интерфейсом
Полиморфная логика
Объединить предыдущие работы в приложении, использующем логику полиморфного хранения объектов. Необходимо сгененрировать контейнер из 1000 фигур, которые хранятся как shared_ptr<Shape>, и применить к ним 2 стандартных алгоритма по вариантам. В качестве предиката использовать предикат из дополнительного задания 2-й лабораторной.
UPDATE (15.05.17). Если вы считаете, что вашу функцию из 2-й лабораторной невозможно использовать в качестве критерия для индивидуального задания (например, если она возвращает что-то отличное от булевых или числовых значений), то необходимо самостоятельно придумать предикат, использующий вируальные функции в дереве классов. Пример: а) сортировка фигур в порядке возрастания их площади, б) отбор фигур, пересекающихся с заданной эталонной фигурой, в) замена фигур, периметр которых меньше определённого порога, на окружность единичного радиуса.
Описание вашего вашего задания приложить в виде файла README. Корректность алгоритмов доказать с помощью юнит тестов и/или ручного тестирования. В случае юнит-тестов тестирование достаточно провести для контейнера небольшого размера (5-10) заданных фигур.
Варианты индивидуальных заданий:
Немодифициующие алгоритмы
- Поиск первого элемента удовлетворяющего определенному критерию.
- Поиск первых n последовательных элементов с определенными свойствами.
- Поиск первого из нескольких возможных элементов по заданному критерию.
- Поиск двух смежных элементов, равных между собой по определенному критерию.
- Проверка двух неупорядоченных диапазонов на равенство по определенному критерию.
- Поиск первых отличающихся друг от друга элементов двух последовательностей по определенному критерию.
- Проверка разделен ли диапазон на две группы по заданному критерию.
- Проверка что все элементы диапазона удовлетворяют определенному критерию.
- Проверка что хотя бы один элемент диапазона соответствует заданному критерию.
- Проверка что ни один элемент диапазона не соответствует заданному критерию.
- Проверка двух упорядоченных диапазонов на равенство по определенному критерию.
Mодифициующие алгоритмы
- Заменить элементы, соответствующие критерию другим значением.
- Скопировать элементы, удовлетворяющие критерию.
- Разделить диапазон на 2 части в соответствии с критерием.
- Создать упорядоченное объединение двух диапазонов.
- Удалить элементы, удовлетворяющие заданному критерию.
- Создать упорядоченное пересечение двух диапазонов.
- Создать упорядоченную разность двух диапазонов.
- Заменить элементы, соответствующие критерию, копируя весь диапазон.
- Скопировать элементы удалив дубликаты в соответствии с критерием.
- Скопировать элементы, за исключением тех, кто удовлетворяет критериюю
- Упорядочить элементы, пока первые n элементов не будут следовать в требуемом порядке.
- Отсортировать элементы диапазона так, чтобы правильный элемент находился на n-й позиции (все стоящие перед ним элементы не превосходят его, а все стоящие после - превосходят либо равны).