User Tools

Site Tools


Sidebar






Old

courses:object_oriented_programming:practice

Практика

Перед очной защитой, все задания выкладываются на Stepik и, где это возможно, организуются автоматические проверки. До защиты работы, все проверки должны быть пройдены

Создание и разрушение объектов

  1. Stepik

Наследование

Индивидуальные задания, проверяемые на Stepik c помощью peer-review. Варианты заданий:

  1. Окружность, пятиугольник, правильный пятиугольник
  2. Прямоугольник, квадрат, эллипс
  3. Равнобедренный треугольник, квадрат, прямоугольный треугольник
  4. Трапеция, эллипс, равнобедренная трапеция
  5. Эллипс, сектор эллипса, параллелограмм
  6. Треугольник, ромб, параллелограмм
  7. Дуга, окружность, эллипс
  8. Квадрат, ромб, трапеция
  9. Пятиугольник, пентаграмма, прямоугольник
  10. Пятиугольник, эллипс, отрезок
  11. Прямоугольник, окружность, трапеция

Контейнер

Разработать шаблонный контейнер с заданным интерфейсом

Умный указатель

Разработать умный указатель с заданным интерфейсом

Полиморфная логика

Объединить предыдущие работы в приложении, использующем логику полиморфного хранения объектов. Необходимо сгененрировать контейнер из 1000 фигур, которые хранятся как shared_ptr<Shape>, и применить к ним 2 стандартных алгоритма по вариантам. В качестве предиката использовать предикат из дополнительного задания 2-й лабораторной.

UPDATE (15.05.17). Если вы считаете, что вашу функцию из 2-й лабораторной невозможно использовать в качестве критерия для индивидуального задания (например, если она возвращает что-то отличное от булевых или числовых значений), то необходимо самостоятельно придумать предикат, использующий вируальные функции в дереве классов. Пример: а) сортировка фигур в порядке возрастания их площади, б) отбор фигур, пересекающихся с заданной эталонной фигурой, в) замена фигур, периметр которых меньше определённого порога, на окружность единичного радиуса.

Описание вашего вашего задания приложить в виде файла README. Корректность алгоритмов доказать с помощью юнит тестов и/или ручного тестирования. В случае юнит-тестов тестирование достаточно провести для контейнера небольшого размера (5-10) заданных фигур.

Варианты индивидуальных заданий:

Немодифициующие алгоритмы

  1. Поиск первого элемента удовлетворяющего определенному критерию.
  2. Поиск первых n последовательных элементов с определенными свойствами.
  3. Поиск первого из нескольких возможных элементов по заданному критерию.
  4. Поиск двух смежных элементов, равных между собой по определенному критерию.
  5. Проверка двух неупорядоченных диапазонов на равенство по определенному критерию.
  6. Поиск первых отличающихся друг от друга элементов двух последовательностей по определенному критерию.
  7. Проверка разделен ли диапазон на две группы по заданному критерию.
  8. Проверка что все элементы диапазона удовлетворяют определенному критерию.
  9. Проверка что хотя бы один элемент диапазона соответствует заданному критерию.
  10. Проверка что ни один элемент диапазона не соответствует заданному критерию.
  11. Проверка двух упорядоченных диапазонов на равенство по определенному критерию.

Mодифициующие алгоритмы

  1. Заменить элементы, соответствующие критерию другим значением.
  2. Скопировать элементы, удовлетворяющие критерию.
  3. Разделить диапазон на 2 части в соответствии с критерием.
  4. Создать упорядоченное объединение двух диапазонов.
  5. Удалить элементы, удовлетворяющие заданному критерию.
  6. Создать упорядоченное пересечение двух диапазонов.
  7. Создать упорядоченную разность двух диапазонов.
  8. Заменить элементы, соответствующие критерию, копируя весь диапазон.
  9. Скопировать элементы удалив дубликаты в соответствии с критерием.
  10. Скопировать элементы, за исключением тех, кто удовлетворяет критериюю
  11. Упорядочить элементы, пока первые n элементов не будут следовать в требуемом порядке.
  12. Отсортировать элементы диапазона так, чтобы правильный элемент находился на n-й позиции (все стоящие перед ним элементы не превосходят его, а все стоящие после - превосходят либо равны).
courses/object_oriented_programming/practice.txt · Last modified: 2022/12/10 09:08 (external edit)