Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<cmath>
- #include<iostream>
- #include <string>
- #include <iomanip>
- using namespace std;
- int main() {
- setlocale(LC_ALL, "rus");
- float a, b, c, h, m;
- float gipotenuz;
- double epsilon = 0.0001;
- cout << "Введите A: ";
- cin >> a;
- cout << "Введите B: ";
- cin >> b;
- cout << "Введите С: ";
- cin >> c;
- string type("Разносторонний, ");
- string osnovanie;
- float p = ((a + b + c) / 2); //периметр
- float s = sqrt(p*(p - a)*(p - b)*(p - c)); //площадь
- if (((a + b) > c) && ((a + c) > b) && ((b + c) > a)) { //условие существования треугольника
- //определение вида треугольника
- if ((a == b) && (a == c) && (b == c)) (type = "Равносторонний, ");
- else
- if ((a == b) ^ (a == c) ^ (b == c)) (type = "Равнобедренный, ");
- if (((a*a) + (b*b) == (c*c)) || ((a*a) + (c*c) == (b*b)) || ((c*c) + (b*b) == (a*a))) (type = "Прямоугольный, ");
- if (type == "Равносторонний, ") {
- h = ((sqrt(3) / 2) * a);
- (cout << type << "Высота - " << h << "\n");
- }
- //done
- if (type == "Равнобедренный, ") {
- if (a == b) {
- if ((abs(2 * a * a - (c * c)) < epsilon)) (type = "Равнобедренный и прямоугольный, "); //проверка условия "равнобедренный и прямоугольный
- h = (a * b) / c;
- cout << type << a << " и " << b << " - боковые стороны, " << c << " - основание, " << "высота - " << h << "\n";
- }
- if (a == c) {
- if ((abs(2 * a * a - (b * b)) < epsilon)) (type = "Равнобедренный и прямоугольный, ");
- h = (a * c) / b;
- cout << type << a << " и " << c << " - боковые стороны, " << b << " - основание, " << "высота - " << h << "\n";
- }
- if (b == c) {
- if ((abs(2 * b * b - (a * a)) < epsilon)) (type = "Равнобедренный и прямоугольный, ");
- h = (b * c) / a;
- cout << type << b << " и " << c << " - боковые стороны, " << a << " - основание, " << "высота - " << h << "\n";
- }
- }
- //done
- if (type == "Прямоугольный, ") {
- if ((a > b) && (a > c)) { //нахождение гипотенузы
- gipotenuz = a;
- h = (2 / a * sqrt(p*(p - a)*(p - b)*(p - c))); //вычисление высоты треугольника
- m = (sqrt(2 * c*c + 2 * b*b - a*a) / 2); // вычисление медианы
- (cout << type << b << " и " << c << " катеты, " << "Гипотенуза - " << gipotenuz << ", высота - " << h << ", медиана " << m << "\n");
- }
- if ((b > a) && (b > c)) {
- gipotenuz = b;
- h = (2 / b * sqrt(p*(p - a)*(p - b)*(p - c)));
- m = (sqrt(2 * a*a + 2 * b*b - b*b) / 2);
- (cout << type << a << " и " << c << " катеты, " << "Гипотенуза - " << gipotenuz << ", высота - " << h << ", медиана " << m << "\n");
- }
- if ((c > a) && (c > b)) {
- gipotenuz = c;
- h = (2 / c * sqrt(p*(p - a)*(p - b)*(p - c)));
- m = (sqrt(2 * a*a + 2 * b*b - c*c) / 2);
- (cout << type << a << " и " << b << " катеты, " << "Гипотенуза - " << gipotenuz << ", высота - " << h << ", медиана " << m << "\n");
- }
- }
- if (type == "Разносторонний, ") {
- cout << type << "\n";
- }
- float r1 = sqrt(((p - a) * (p - b) * (p - c)) / p); //вписанная окружность
- float r2 = ((a * b * c) / (4 * sqrt(p * (p - a) * (p - b) * (p - c)))); //описанная окружность
- cout << "Площадь равна: " << s << "\n";
- cout << "Радиус вписанной окружности: " << r1 << endl;
- cout << "Радиус описанной окружности: " << r2 << endl;
- }
- else cout << "Треугольник не существует.\n";
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement