/* * Для расчет площади фигур квадрат/ромб/прямоугольник/параллелограмм * справедлива будет одна общая формула - произведение основания на высоту */ #ifndef EXERCISE_1_HPP_ #define EXERCISE_1_HPP_ #include #define PI 3.14159265358979323846 float getRadian(float degree) { return PI / 180 * degree; } class Figure { public: virtual float area() = 0; virtual ~Figure() = 0; }; class Parallelogram : public Figure { private: float m_side_a; float m_side_b; float m_height; protected: float getSideA() const { return m_side_a; } float getSideB() const { return m_side_b; } public: Parallelogram(float side_a, float height, float side_b = 0.0) : m_side_a(side_a), m_side_b(side_b), m_height(height) { } float area() { float area = m_side_a * m_height; std::cout << "Площадь параллелограмма равна " << area << std::endl; return area; } }; class Circle : public Figure { }; class Rectangle : public Parallelogram { public: Rectangle(float side_a, float side_b) : Parallelogram(side_a, side_b, side_b) { } float area() { float area = getSideA() * getSideB(); std::cout << "Площадь прямоугольника равна " << area << std::endl; return area; } }; class Square : public Parallelogram { Square(float side_a, float side_b) : Parallelogram(side_a, side_b, side_b) { } float area() { float area = getSideA() * getSideB(); std::cout << "Площадь квадрата равна " << area << std::endl; return area; } }; class Rhombus : public Parallelogram { Rhombus(float side_a, float side_b) : Parallelogram(side_a, side_b, side_b) { } float area() { float area = getSideA() * getSideB(); std::cout << "Площадь ромба равна " << area << std::endl; return area; } }; #endif