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