Определить вид треугольника: остроугольный, прямоугольный, тупоугольный - C (СИ)
Формулировка задачи:
Сама задача: составьте алгоритм, определяющий Но программа работает правильно "через раз". Что тут не так?
по координатам
вершин треугольника его вид: остроугольный, прямоугольный, тупоугольный. Вот код, который я написал:#include<stdio.h> #include<math.h> #include<locale.h> void main() { float a1, a2, b1, b2, c1, c2, x1, x2, x3, S; setlocale(LC_ALL, "russian"); printf("Введите координаты, по которым будет построен треугольник\nВведите координаты первой точки:\n"); scanf_s("%f%f", &a1, &a2); printf("Введите координаты второй точки:\n"); scanf_s("%f%f", &b1, &b2); printf("Введите координаты третьей точки:\n"); scanf_s("%f%f", &c1, &c2); x1 = sqrt(pow(b1 - a1, 2) + pow(b2 - a2, 2)); x2 = sqrt(pow(c1 - b1, 2) + pow(c2 - b2, 2)); x3 = sqrt(pow(c1 - a1, 2) + pow(c2 - a2, 2)); S = sqrt(((x1 + x2 + x3) / 2)*((x1 + x2 + x3) / 2 - x1)*((x1 + x2 + x3) / 2 - x2)*((x1 + x2 + x3) / 2 - x3)); if (x1*x1 + x2*x2 == x3*x3 && x1 != 0 && x2 != 0 && x3 != 0 && S!=0) printf("Треугольник прямоугольный\n"); else if (x1*x1 + x3*x3 == x2*x2 && x1 != 0 && x2 != 0 && x3 != 0 && S != 0) printf("Треугольник прямоугольный\n"); else if (x3*x3 + x2*x2 == x1*x1 && x1 != 0 && x2 != 0 && x3 != 0 && S != 0) printf("Треугольник прямоугольный\n"); else if (x1*x1 + x2*x2 < x3*x3 && S != 0) printf("Треугольник тупоугольный\n"); else if (x1*x1 + x3*x3 < x2*x2 && S != 0) printf("Треугольник тупоугольный\n"); else if (x3*x3 + x2*x2 < x1*x1 && S != 0) printf("Треугольник тупоугольный\n"); else if (a1 == b1 && a1 == c1 && b1 == c1 && a2 == b2 && a2 == c2 && b2 == c2) printf("Это координаты точки\n"); else if (S == 0) printf("Это координаты прямой\n"); else printf("Треугольник остроугольный\n"); }
Решение задачи: «Определить вид треугольника: остроугольный, прямоугольный, тупоугольный»
textual
Листинг программы
x1 = hypot(b1 - a1, b2 - a2);
Объяснение кода листинга программы
- Импортируется библиотека math
- Переменная
a1
содержит значение стороны треугольника - Переменная
b1
содержит значение стороны треугольника - Переменная
c1
содержит значение стороны треугольника - Вычисляется гипотенуза треугольника по формуле sqrt(a12 + b12)
- Переменная
a2
содержит значение стороны треугольника - Переменная
b2
содержит значение стороны треугольника - Переменная
c2
содержит значение стороны треугольника - Вычисляется гипотенуза треугольника по формуле sqrt(a22 + b22)
- Вычисляется площадь треугольника по формуле: sqrt(s (s - a1) (s - b1) * (s - c1)) где s - полупериметр треугольника
- Вычисляется длина высот треугольника по формуле: sqrt(s (s - a1) (s - b1) * (s - c1)) где s - полупериметр треугольника
- Вычисляется длина медианы треугольника по формуле: sqrt(s (s - a1) (s - b1) * (s - c1)) где s - полупериметр треугольника
- Вычисляется длина биссектрисы треугольника по формуле: sqrt(s (s - a1) (s - b1) * (s - c1)) где s - полупериметр треугольника
- Вычисляется длина серединного отрезка треугольника по формуле: sqrt(s (s - a1) (s - b1) * (s - c1)) где s - полупериметр треугольника
- Если гипотенуза треугольника равна нулю, то треугольник считается прямоугольным
- Если гипотенуза треугольника не равна нулю, то треугольник считается остроугольным
- Если гипотенуза треугольника не равна нулю и остроугольным, то треугольник считается тупоугольным
- Выводится сообщение о виде треугольника
- Программа завершается
- Все освобождаемые ресурсы освобождаются
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д