Перейти к содержимому
Задача · Классы и ООП · урок 12 из 13

Задача: фигуры с виртуальной площадью

Абстрактный класс Shape с методом virtual double area() const = 0 уже объявлен. Допишите производные от него классы Circle и Rect, поля добавьте сами. Circle(double radius) — круг радиуса radius, Rect(double w, double h) — прямоугольник со сторонами w и h.

Ещё напишите функцию double total_area(const std::vector<const Shape*>& shapes) — сумму площадей всех фигур. Число π берите из константы kPi, она уже определена в файле.

  • Circle(1.0).area() → kPi
  • Rect(2.0, 3.5).area() → 7.0
  • total_area({&c, &r}) для Circle c(1.0) и Rect r(2.0, 3.0) → kPi + 6.0

Ограничения: размеры неотрицательные; одна фигура может встречаться в векторе несколько раз; для пустого вектора total_area возвращает 0.

shapes.cpp — cpp
cpp · строк: 34
Ctrl+Enter запуск · Esc выйти из редактора