Задача A. Набор фигур
Условие
Вам дана функция main, которая считывает из стандартного ввода команды по работе с набором геометрических фигур.
Как видно из кода, есть два вида команд:
- ADD — добавить фигуру в набор;
- PRINT — для каждой фигуры в наборе распечатать название, периметр и площадь.
Программа поддерживает три вида фигур: прямоугольник, треугольник и круг. Их добавление описывается так:
- ADD RECT width height — добавить прямоугольник с размерами width и height (например, ADD RECT 2 3).
- ADD TRIANGLE a b c — добавить треугольник со сторонами a, b и c (например, ADD TRIANGLE 3 4 5).
- ADD CIRCLE r — добавить круг радиуса r (например, ADD CIRCLE 5).
Реализуйте недостающие функции и классы:
- базовый класс Figure с чисто виртуальными методами Name, Perimeter и Area;
- классы Triangle, Rect и Circle, которые являются наследниками класса Figure и переопределяют его виртуальные методы;
- функцию CreateFigure, которая в зависимости от содержимого входного потока создаёт shared_ptr<Rect>, shared_ptr<Triangle> или shared_ptr<Circle>.
Гарантируется, что размеры всех фигур — это натуральные числа не больше 1000. В качестве значения PI используйте 3,14.
Материалы задачи
main.cpp
task.xml