#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;
}
To embed this project on your website, copy the following code and paste it into your website's HTML: