#include <iostream>
#include <stdlib.h>
#include <cmath>

using namespace std;


class TTriangle {
private:
    unsigned int angleA, angleB, angleC; // Углы
    double sideA, sideB, sideC; // Стороны

    bool validAngles() const {
        return angleA + angleB + angleC == 180;
    }

    bool validSides() const {
        return sideA + sideB > sideC && sideA + sideC > sideB && sideB + sideC > sideA;
    }

    double areaHeron() const {
        double p = (sideA + sideB + sideC) / 2;
        return sqrt(p * (p - sideA) * (p - sideB) * (p - sideC));
    }

public:
    TTriangle(
        unsigned int a,
        unsigned int b,
        unsigned int c,
        double a1,
        double b1,
        double c1
    )
        : angleA(a)
        , angleB(b)
        , angleC(c)
        , sideA(a1)
        , sideB(b1)
        , sideC(c1) {
        if (!validAngles() || !validSides()) {
            cout << "Некорректные данные для треугольника.";
            exit(0);
        }
    }

    unsigned int getAngleA() const { return angleA; }
    unsigned int getAngleB() const { return angleB; }
    unsigned int getAngleC() const { return angleC; }

    void setAngleA(unsigned int a) {
        if (a + angleB + angleC == 180) {
            angleA = a;
            return;
        }

        cout << "Некорректный угол A.";
        exit(0);
    }

    void setAngleB(unsigned int b) {
        if (angleA + b + angleC == 180) {
            angleB = b;
            return;
        }
        
        cout << "Некорректный угол B.";
        exit(0);
    }

    void setAngleC(unsigned int c) {
        if (angleA + angleB + c == 180) {
            angleC = c;
            return;
        }
        
        cout << "Некорректный угол C.";
        exit(0);
    }

    double getSideA() const { return sideA; }
    double getSideB() const { return sideB; }
    double getSideC() const { return sideC; }

    void setSideA(double a) {
        if (a + sideB > sideC && a + sideC > sideB && sideB + sideC > a) {
            sideA = a;
            return;
        }

        cout << "Некорректная сторона A.";
        exit(0);
    }

    void setSideB(double b) {
        if (sideA + b > sideC && sideA + sideC > b && b + sideC > sideA) {
            sideB = b;
            return;
        }

        cout << "Некорректная сторона B.";
        exit(0);
    }

    void setSideC(double c) {
        if (sideA + sideB > c && sideA + c > sideB && sideB + c > sideA) {
            sideC = c;
            return;
        }

        cout << "Некорректная сторона C.";
        exit(0);
    }


    double area() const {
        return areaHeron();
    }

    double perimeter() const {
        return sideA + sideB + sideC;
    }


    double getHeight(char side) const {
        switch (side) {
            case 'a':
                return 2 * area() / sideA;
            case 'b':
                return 2 * area() / sideB;
            case 'c':
                return 2 * area() / sideC;
            default:
                cout << "Некорректный символ для стороны.";
                exit(0);
        }
    }

    string getType() const {
        if (sideA == sideB && sideB == sideC) {
            return "Равносторонний";
        } else if (sideA == sideB || sideA == sideC || sideB == sideC) {
            return "Равнобедренный";
        } else if (pow(sideA, 2) == pow(sideB, 2) + pow(sideC, 2) ||
                   pow(sideB, 2) == pow(sideA, 2) + pow(sideC, 2) ||
                   pow(sideC, 2) == pow(sideA, 2) + pow(sideB, 2)) {
            return "Прямоугольный";
        } else {
            return "Произвольный";
        }
    }
};

int main() {
    TTriangle triangle1(60, 60, 60, 5, 5, 5);
    
    cout << "Площадь: " << triangle1.area() << endl;
    cout << "Периметр: " << triangle1.perimeter() << endl;
    cout << "Высота к стороне 'a': " << triangle1.getHeight('a') << endl;
    cout << "Тип треугольника: " << triangle1.getType() << endl;

    triangle1.setAngleA(70);
    triangle1.setSideB(6);
    
    cout << "Измененный тип треугольника: " << triangle1.getType() << endl;
    return 0;
}

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: