This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
courses:object_oriented_programming:practice [2017/03/22 16:56] korolev |
courses:object_oriented_programming:practice [2022/12/10 09:08] (current) |
||
---|---|---|---|
Line 26: | Line 26: | ||
===== Полиморфная логика ===== | ===== Полиморфная логика ===== | ||
- | Объединить предыдущие работы в приложении, использующем логику полиморфного хранения объектов | + | Объединить предыдущие работы в приложении, использующем логику полиморфного хранения объектов. Необходимо сгененрировать контейнер из 1000 фигур, которые хранятся как shared_ptr<Shape>, и применить к ним 2 стандартных алгоритма по вариантам. В качестве предиката использовать предикат из дополнительного задания 2-й лабораторной. |
+ | <color #ed1c24>UPDATE</color> (15.05.17). Если вы считаете, что вашу функцию из 2-й лабораторной невозможно использовать в качестве критерия для индивидуального задания (например, если она возвращает что-то отличное от булевых или числовых значений), то необходимо самостоятельно придумать предикат, __использующий вируальные функции__ в дереве классов. | ||
+ | Пример: а) сортировка фигур в порядке возрастания их площади, | ||
+ | б) отбор фигур, пересекающихся с заданной эталонной фигурой, | ||
+ | в) замена фигур, периметр которых меньше определённого порога, на окружность единичного радиуса. | ||
+ | |||
+ | Описание вашего вашего задания приложить в виде файла README. Корректность алгоритмов доказать с помощью юнит тестов и/или ручного тестирования. В случае юнит-тестов тестирование достаточно провести для контейнера небольшого размера (5-10) заданных фигур. | ||
+ | |||
+ | Варианты индивидуальных заданий: | ||
+ | |||
+ | ==== Немодифициующие алгоритмы ==== | ||
+ | |||
+ | - Поиск первого элемента удовлетворяющего определенному критерию. | ||
+ | - Поиск первых n последовательных элементов с определенными свойствами. | ||
+ | - Поиск первого из нескольких возможных элементов по заданному критерию. | ||
+ | - Поиск двух смежных элементов, равных между собой по определенному критерию. | ||
+ | - Проверка двух неупорядоченных диапазонов на равенство по определенному критерию. | ||
+ | - Поиск первых отличающихся друг от друга элементов двух последовательностей по определенному критерию. | ||
+ | - Проверка разделен ли диапазон на две группы по заданному критерию. | ||
+ | - Проверка что все элементы диапазона удовлетворяют определенному критерию. | ||
+ | - Проверка что хотя бы один элемент диапазона соответствует заданному критерию. | ||
+ | - Проверка что ни один элемент диапазона не соответствует заданному критерию. | ||
+ | - Проверка двух упорядоченных диапазонов на равенство по определенному критерию. | ||
+ | |||
+ | ==== Mодифициующие алгоритмы ==== | ||
+ | - Заменить элементы, соответствующие критерию другим значением. | ||
+ | - Скопировать элементы, удовлетворяющие критерию. | ||
+ | - Разделить диапазон на 2 части в соответствии с критерием. | ||
+ | - Создать упорядоченное объединение двух диапазонов. | ||
+ | - Удалить элементы, удовлетворяющие заданному критерию. | ||
+ | - Создать упорядоченное пересечение двух диапазонов. | ||
+ | - Создать упорядоченную разность двух диапазонов. | ||
+ | - Заменить элементы, соответствующие критерию, копируя весь диапазон. | ||
+ | - Скопировать элементы удалив дубликаты в соответствии с критерием. | ||
+ | - Скопировать элементы, за исключением тех, кто удовлетворяет критериюю | ||
+ | - Упорядочить элементы, пока первые n элементов не будут следовать в требуемом порядке. | ||
+ | - Отсортировать элементы диапазона так, чтобы правильный элемент находился на n-й позиции (все стоящие перед ним элементы не превосходят его, а все стоящие после - превосходят либо равны). | ||