User Tools

Site Tools


courses:object_oriented_programming:practice

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
courses:object_oriented_programming:practice [2017/03/02 07:59]
kalishenko created
courses:object_oriented_programming:practice [2022/12/10 09:08] (current)
Line 6: Line 6:
  
 ===== Наследование ===== ===== Наследование =====
-Индивидуальные задания,​ проверяемые на Stepik c помощью peer-review. Варианты заданий выдаются каждому+Индивидуальные задания,​ проверяемые на Stepik c помощью peer-review. Варианты заданий
 +  - Окружность,​ пятиугольник,​ правильный пятиугольник 
 +  - Прямоугольник,​ квадрат, эллипс 
 +  - Равнобедренный треугольник,​ квадрат,​ прямоугольный треугольник 
 +  - Трапеция, эллипс,​ равнобедренная трапеция 
 +  - Эллипс,​ сектор эллипса,​ параллелограмм 
 +  - Треугольник,​ ромб, параллелограмм 
 +  - Дуга, окружность, эллипс 
 +  - Квадрат, ромб, трапеция 
 +  - Пятиугольник,​ пентаграмма,​ прямоугольник 
 +  - Пятиугольник,​ эллипс,​ отрезок 
 +  - Прямоугольник,​ окружность,​ трапеция
  
 ===== Контейнер ===== ===== Контейнер =====
Line 12: Line 23:
  
 ===== Умный указатель ===== ===== Умный указатель =====
-Разработать ​аналог shared_ptr ​с заданным интерфейсом+Разработать ​умный указатель с заданным интерфейсом
  
 ===== Полиморфная логика ===== ===== Полиморфная логика =====
-Объединить предыдущие работы в приложении,​ использующем логику полиморфного хранения объектов+Объединить предыдущие работы в приложении,​ использующем логику полиморфного хранения объектов. Необходимо сгененрировать контейнер из 1000 фигур, которые хранятся как shared_ptr<​Shape>,​ и применить к ним 2 стандартных алгоритма по вариантам. В качестве предиката использовать предикат из дополнительного задания 2-й лабораторной.
  
 +<color #​ed1c24>​UPDATE</​color>​ (15.05.17). Если вы считаете,​ что вашу функцию из 2-й лабораторной невозможно использовать в качестве критерия для индивидуального задания (например,​ если она возвращает что-то отличное от булевых или числовых значений),​ то необходимо самостоятельно придумать предикат,​ __использующий вируальные функции__ в дереве классов.
 +Пример:​ а) сортировка фигур в порядке возрастания их площади,​
 +б) отбор фигур, пересекающихся с заданной эталонной фигурой,​
 +в) замена фигур, периметр которых меньше определённого порога,​ на окружность единичного радиуса.
 +
 +Описание вашего вашего задания приложить в виде файла README. Корректность алгоритмов доказать с помощью юнит тестов и/или ручного тестирования. В случае юнит-тестов тестирование достаточно провести для контейнера небольшого размера (5-10) заданных фигур.
 +
 +Варианты индивидуальных заданий:​
 +
 +==== Немодифициующие алгоритмы ====
 +
 +  - Поиск первого элемента удовлетворяющего определенному критерию.
 +  - Поиск первых n последовательных элементов с определенными свойствами.
 +  - Поиск первого из нескольких возможных элементов по заданному критерию.
 +  - Поиск двух смежных элементов,​ равных между собой по определенному критерию.
 +  - Проверка двух неупорядоченных диапазонов на равенство по определенному критерию.
 +  - Поиск первых отличающихся друг от друга элементов двух последовательностей по определенному критерию.
 +  - Проверка разделен ли диапазон на две группы по заданному критерию.
 +  - Проверка что все элементы диапазона удовлетворяют определенному критерию.
 +  - Проверка что хотя бы один элемент диапазона соответствует заданному критерию.
 +  - Проверка что ни один элемент диапазона не соответствует заданному критерию.
 +  - Проверка двух упорядоченных диапазонов на равенство по определенному критерию.
 +
 +==== Mодифициующие алгоритмы ====
 +  - Заменить элементы,​ соответствующие критерию другим значением.
 +  - Скопировать элементы,​ удовлетворяющие критерию.
 +  - Разделить диапазон на 2 части в соответствии с критерием.
 +  - Создать упорядоченное объединение двух диапазонов.
 +  - Удалить элементы,​ удовлетворяющие заданному критерию.
 +  - Создать упорядоченное пересечение двух диапазонов.
 +  - Создать упорядоченную разность двух диапазонов.
 +  - Заменить элементы,​ соответствующие критерию,​ копируя весь диапазон.
 +  - Скопировать элементы удалив дубликаты в соответствии с критерием.
 +  - Скопировать элементы,​ за исключением тех, кто удовлетворяет критериюю
 +  - Упорядочить элементы,​ пока первые n элементов не будут следовать в требуемом порядке.
 +  - Отсортировать элементы диапазона так, чтобы правильный элемент находился на n-й позиции (все стоящие перед ним элементы не превосходят его, а все стоящие после - превосходят либо равны).
  
courses/object_oriented_programming/practice.1488441589.txt.gz · Last modified: 2022/12/10 09:08 (external edit)