107 lines
1.9 KiB
C++
107 lines
1.9 KiB
C++
|
/*
|
|||
|
* Для расчет площади фигур квадрат/ромб/прямоугольник/параллелограмм
|
|||
|
* справедлива будет одна общая формула - произведение основания на высоту
|
|||
|
*/
|
|||
|
|
|||
|
#ifndef EXERCISE_1_HPP_
|
|||
|
#define EXERCISE_1_HPP_
|
|||
|
|
|||
|
#include <math.h>
|
|||
|
|
|||
|
#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
|