Определить вид треугольника: остроугольный, прямоугольный, тупоугольный - 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);

Объяснение кода листинга программы

  1. Импортируется библиотека math
  2. Переменная a1 содержит значение стороны треугольника
  3. Переменная b1 содержит значение стороны треугольника
  4. Переменная c1 содержит значение стороны треугольника
  5. Вычисляется гипотенуза треугольника по формуле sqrt(a12 + b12)
  6. Переменная a2 содержит значение стороны треугольника
  7. Переменная b2 содержит значение стороны треугольника
  8. Переменная c2 содержит значение стороны треугольника
  9. Вычисляется гипотенуза треугольника по формуле sqrt(a22 + b22)
  10. Вычисляется площадь треугольника по формуле: sqrt(s (s - a1) (s - b1) * (s - c1)) где s - полупериметр треугольника
  11. Вычисляется длина высот треугольника по формуле: sqrt(s (s - a1) (s - b1) * (s - c1)) где s - полупериметр треугольника
  12. Вычисляется длина медианы треугольника по формуле: sqrt(s (s - a1) (s - b1) * (s - c1)) где s - полупериметр треугольника
  13. Вычисляется длина биссектрисы треугольника по формуле: sqrt(s (s - a1) (s - b1) * (s - c1)) где s - полупериметр треугольника
  14. Вычисляется длина серединного отрезка треугольника по формуле: sqrt(s (s - a1) (s - b1) * (s - c1)) где s - полупериметр треугольника
  15. Если гипотенуза треугольника равна нулю, то треугольник считается прямоугольным
  16. Если гипотенуза треугольника не равна нулю, то треугольник считается остроугольным
  17. Если гипотенуза треугольника не равна нулю и остроугольным, то треугольник считается тупоугольным
  18. Выводится сообщение о виде треугольника
  19. Программа завершается
  20. Все освобождаемые ресурсы освобождаются

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5
Похожие ответы