/
AirLexa
/
origin
Обзор
Документация
Войти
/
AirLexa
/
origin
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
Lesson_05/Task_3/Task_3.cpp
280 строк
6 KB
AirLexa
добавил Lesson_05/Task_3/Task_3.cpp
23 окт 2025, 09:09
23 окт 2025, 09:09
fa606d8
Код
Авторство
О чём код?
#include <iostream> #include <windows.h> #include <string> class Figura { private: std::string name = "Фигура"; int sides = 0; public: void set_name(std::string name) { this->name = name; } void set_sides(int sides) { this->sides = sides; } int get_sides() { return sides; } virtual std::string print_info() { return name.append(check() ? "\nПравильная" : "\nНеправильная") .append("\nКоличество сторон: ").append(std::to_string(sides)) .append("\n"); } virtual bool check() { return sides == 0; } }; class Tri : public Figura { protected: int a, b, c, A, B, C; public: Tri(int a, int b, int c, int A, int B, int C) { set_name("Треугольник"); set_sides(3); this->a = a; this->b = b; this->c = c; this->A = A; this->B = B; this->C = C; } public: std::string print_info() override { return Figura::print_info() + "Стороны: а = " + std::to_string(a) + ", b = " + std::to_string(b) + ", c = " + std::to_string(c) + "\nУглы: A = " + std::to_string(A) + ", B = " + std::to_string(B) + ", C = " + std::to_string(C) + "\n"; } bool check() override { return get_sides() == 3 && A+B+C == 180; } }; class Tri_90 : public Tri { public: Tri_90(int a, int b, int c, int A, int B) : Tri(a, b, c, A, B, 90) { set_name("Прямоугольный треугольник"); } std::string print_info() override { return Tri::print_info(); } bool check() override { return Tri::check() && C == 90; } }; class Tri_2_side : public Tri { public: Tri_2_side(int a, int b, int A, int B) : Tri(a, b, a, A, B, A) { set_name("Равнобедренный треугольник"); } std::string print_info() override { return Tri::print_info(); } bool check() override { return Tri::check() && a == c && A == C; } }; class Tri_3_side : public Tri_2_side { public: Tri_3_side(int a) : Tri_2_side(a, a, 60, 60) { set_name("Равносторонний треугольник"); } std::string print_info() override { return Tri::print_info(); } bool check() override { return Tri::check() && a == b && b == c && A == B && B == C; } }; class Quadre : public Figura { protected: int a, b, c, d, A, B, C, D; public: Quadre(int a, int b, int c, int d, int A, int B, int C, int D) { set_name("Четырехугольник"); set_sides(4); this->a = a; this->b = b; this->c = c; this->d = d; this->A = A; this->B = B; this->C = C; this->D = D; } public: std::string print_info() override { return Figura::print_info() + "Стороны: а = " + std::to_string(a) + ", b = " + std::to_string(b) + ", c = " + std::to_string(c) + ", d = " + std::to_string(d) + "\nУглы: A = " + std::to_string(A) + ", B = " + std::to_string(B) + ", C = " + std::to_string(C) + ", D = " + std::to_string(D) + "\n"; } bool check() override { return get_sides() == 4 && A + B + C + D == 360; } }; class Parall : public Quadre { public: Parall(int a, int b, int A, int B) : Quadre(a, b, a, b, A, B, A, B) { set_name("Параллелограм"); } std::string print_info() override { return Quadre::print_info(); } bool check() override { return Quadre::check() && a == c && b == d && A == C && B == D; } }; class Rect : public Parall { public: Rect(int a, int b) : Parall(a, b, 90, 90) { set_name("Прямоугольник"); } std::string print_info() override { return Quadre::print_info(); } bool check() override { return Quadre::check() && a == c && b == d && A == B && B == C && C == D; } }; class Square : public Rect { public: Square(int a) : Rect(a, a) { set_name("Квадрат"); } std::string print_info() override { return Quadre::print_info(); } bool check() override { return Quadre::check() && a == b && b == c && c == d && A == B && B == C && C == D; } }; class Romb : public Parall { public: Romb(int a, int A, int B) : Parall(a, a, A, B) { set_name("Ромб"); } std::string print_info() override { return Quadre::print_info(); } bool check() override { return Quadre::check() && a == b && b == c && c == d && A == C && B == D; } }; int main() { SetConsoleCP(1251); SetConsoleOutputCP(1251); Figura fig; std::cout << fig.print_info() << std::endl; Tri tri(10, 20, 30, 50, 60, 70); std::cout << tri.print_info() << std::endl; Tri_90 tri_90(10, 20, 30, 50, 60); std::cout << tri_90.print_info() << std::endl; Tri_90 tri_90_2(10, 20, 30, 50, 40); std::cout << tri_90_2.print_info() << std::endl; Tri_2_side tri_2_side(10, 20, 50, 60); std::cout << tri_2_side.print_info() << std::endl; Tri_3_side tri_3_side(30); std::cout << tri_3_side.print_info() << std::endl; Quadre quadre(10, 20, 30, 40, 50, 60, 70, 80); std::cout << quadre.print_info() << std::endl; Rect rect(10, 20); std::cout << rect.print_info() << std::endl; Square square(20); std::cout << square.print_info() << std::endl; Parall parall(20, 30, 30, 40); std::cout << parall.print_info() << std::endl; Romb romb(30, 30, 40); std::cout << romb.print_info() << std::endl; return 0; }