/
ArtT
/
Netology
Обзор
Документация
Войти
/
ArtT
/
Netology
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Part2/Task_2_4_3/Task_2_4_3.cpp
221 строка
7 KB
ArtT
Корректировка четвёртого задания
15 ноя 2025, 21:01
15 ноя 2025, 21:01
e968127
Код
Авторство
О чём код?
#include <iostream> #include <string> using namespace std; class Figure { private: string name = "Фигура"; protected: int sides_count{ 0 }; protected: Figure(const string_view setName, const int setSidesCount) : name{ setName }, sides_count{ setSidesCount } {}; virtual bool isGood() { return true; } public: Figure() = default; string printInfo() { return name + ": \n" + (isGood() ? "Правильная" : "Неправильная") + "\nКоличество сторон: " + to_string(sides_count) + "\n"; } }; class Triangle : public Figure { private: int a{ 0 }, b{ 0 }, c{ 0 }; int A{ 0 }, B{ 0 }, C{ 0 }; protected: int get_a() { return a; } int get_b() { return b; } int get_c() { return c; } int get_A() { return A; } int get_B() { return B; } int get_C() { return C; } protected: Triangle(string setName, int set_a, int set_b, int set_c, int set_A, int set_B, int set_C) : Figure(setName, 3), a{ set_a }, b{ set_b }, c{ set_c }, A{ set_A }, B{ set_B }, C{ set_C } {} bool isGood() override { //стороны и углы произвольные, количество сторон равно 3, сумма углов равна 180 if (sides_count == 3 && (get_A() + get_B() + get_C() == 180)) return true; else return false; } public: Triangle(int set_a, int set_b, int set_c, int set_A, int set_B, int set_C) : Figure("Треугольник", 3), a{ set_a }, b{ set_b }, c{ set_c }, A{ set_A }, B{ set_B }, C{ set_C } {} string printInfo() { return Figure::printInfo()+ "Стороны: a = " + to_string(get_a()) + ", b = " + to_string(get_b()) + ", c = " + to_string(get_c()) + "\n" + "Углы: A = " + to_string(get_A()) + ", B = " + to_string(get_B()) + ", C = " + to_string(get_C()); } }; class RectangularTriangle : public Triangle { private: bool isGood() override { //угол C всегда равен 90 if (Triangle::isGood() && get_C() == 90) return true; else return false; } public: RectangularTriangle(int set_a, int set_b, int set_c, int set_A, int set_B) : Triangle("Прямоугольный треугольник", set_a, set_b, set_c, set_A, set_B, 90) {} }; class IsoscelesTriangle : public Triangle { private: bool isGood() override { //стороны a и c равны, углы A и C равны if (Triangle::isGood() && get_a() == get_c() && get_A() == get_C()) return true; else return false; } public: IsoscelesTriangle(int set_a, int set_b, int set_A, int set_B) : Triangle("Равнобедренный треугольник", set_a, set_b, set_a, set_A, set_B, set_A) {} }; class EquilateralTriangle : public Triangle { private: bool isGood() override { //все стороны равны, все углы равны 60 if (Triangle::isGood() && get_a() == get_b() && get_b() == get_c() && get_A() == get_B() && get_B() == get_C() && get_A() == 60) return true; else return false; } public: EquilateralTriangle(int set_a) : Triangle("Равносторонний треугольник", set_a, set_a, set_a, 60, 60, 60) {} }; class Quadrangle : public Figure { private: int a{ 0 }, b{ 0 }, c{ 0 }, d{ 0 }; int A{ 0 }, B{ 0 }, C{ 0 }, D{ 0 }; protected: int get_a() { return a; } int get_b() { return b; } int get_c() { return c; } int get_d() { return d; } int get_A() { return A; } int get_B() { return B; } int get_C() { return C; } int get_D() { return D; } protected: Quadrangle(string setName, int set_a, int set_b, int set_c, int set_d, int set_A, int set_B, int set_C, int set_D) : Figure(setName, 4), a{ set_a }, b{ set_b }, c{ set_c }, d{ set_d }, A{ set_A }, B{ set_B }, C{ set_C }, D{ set_D } {} bool isGood() override { //стороны и углы произвольные, количество сторон равно 4, сумма углов равна 360 if (sides_count == 4 && (get_A() + get_B() + get_C() + get_D() == 360)) return true; else return false; } public: Quadrangle(int set_a, int set_b, int set_c, int set_d, int set_A, int set_B, int set_C, int set_D) : Figure("Четырёхугольник", 4), a{ set_a }, b{ set_b }, c{ set_c }, d{ set_d }, A{ set_A }, B{ set_B }, C{ set_C }, D{ set_D } {} string printInfo() { return Figure::printInfo() + "Стороны: a = " + to_string(get_a()) + ", b = " + to_string(get_b()) + ", c = " + to_string(get_c()) + ", d = " + to_string(get_d()) + "\n" + "Углы: A = " + to_string(get_A()) + ", B = " + to_string(get_B()) + ", C = " + to_string(get_C()) + ", D = " + to_string(get_D()); } }; class Parallelogram : public Quadrangle { protected: Parallelogram(string setName, int set_a, int set_b, int set_A, int set_B) : Quadrangle(setName, set_a, set_b, set_a, set_b, set_A, set_B, set_A, set_B) {} bool isGood() override { //стороны a,c и b,d попарно равны, углы A,C и B,D попарно равны if (Quadrangle::isGood() && get_a() == get_c() && get_b() == get_d() && get_A() == get_C() && get_B() == get_D()) return true; else return false; } public: Parallelogram(int set_a, int set_b, int set_A, int set_B) : Quadrangle("Параллелограмм", set_a, set_b, set_a, set_b, set_A, set_B, set_A, set_B) {} }; class Rectangle : public Parallelogram { protected: Rectangle(string setName, int set_a, int set_b) : Parallelogram(setName, set_a, set_b, 90, 90) {} bool isGood() override { //стороны a,c и b,d попарно равны, все углы равны 90 if (Parallelogram::isGood() && get_A() == get_B() && get_B() == 90) return true; else return false; } public: Rectangle(int set_a, int set_b) : Parallelogram("Прямоугольник", set_a, set_b, 90, 90) {} }; class Square : public Rectangle { private: bool isGood() override { //все стороны равны, все углы равны 90 if (Rectangle::isGood() && get_a() == get_b()) return true; else return false; } public: Square(int set_a) : Rectangle("Квадрат", set_a, set_a) {} }; class Rhomb : public Parallelogram { private: bool isGood() override { //все стороны равны, углы A,C и B,D попарно равны if (Parallelogram::isGood() && get_a() == get_b()) return true; else return false; } public: Rhomb(int set_a, int set_A, int set_B) : Parallelogram("Ромб", set_a, set_a, set_A, set_B) {} }; int main() { setlocale(LC_ALL, "rus"); Figure figure; cout << figure.printInfo() << endl << endl; Triangle triangle(10, 20, 30, 50, 60, 70); cout << triangle.printInfo() << endl << endl; RectangularTriangle rectangularTriangle(20, 30, 40, 50, 40); cout << rectangularTriangle.printInfo() << endl << endl; IsoscelesTriangle isoscelesTriangle(20, 30, 50, 80); cout << isoscelesTriangle.printInfo() << endl << endl; EquilateralTriangle equilateralTriangle(20); cout << equilateralTriangle.printInfo() << endl << endl; Quadrangle quadrangle(10, 20, 30, 40, 60, 60, 110, 140); cout << quadrangle.printInfo() << endl << endl; Parallelogram parallelogram(20, 30, 30, 40); cout << parallelogram.printInfo() << endl << endl; Rectangle rectangle(10, 20); cout << rectangle.printInfo() << endl << endl; Square square(20); cout << square.printInfo() << endl << endl; Rhomb rhomb(30, 30, 40); cout << rhomb.printInfo() << endl << endl; return EXIT_SUCCESS; }