Определить вид треугольника - C (СИ)
Формулировка задачи:
Даны вещественные положительные числа a, b, c. Если существует треугольник со сторонами a, b, c, то: определить его вид (остроугольный, тупоугольный, прямоугольный).
Решение задачи: «Определить вид треугольника»
textual
Листинг программы
int triangle_type(double a, double b, double c) {
if (a > b) { return triangle(b, a, c); }
if (b > c) { return triangle(a, c, b); }
if (a + b < c) { return 0; }
double eps = 0.00001 * a;
double diff = c * c - (a * a + b * b);
if (diff < -eps) { return 1; }
if (diff > eps) { return 2; }
return 3;
}
Объяснение кода листинга программы
В данном коде определена функция triangle_type, которая принимает три аргумента типа double: a, b и c. Эта функция вычисляет тип треугольника по его сторонам a, b и c.
- Сначала выполняется проверка: если a больше b, то происходит рекурсивный вызов функции triangle с аргументами b, a и c.
- Если b больше c, то также происходит рекурсивный вызов функции triangle, но уже с аргументами a, c и b.
- Если ни одно из условий не выполнилось, то выполняется проверка: если сумма a и b меньше c, то возвращается значение 0.
- Затем определяется переменная eps, которая равна 0.00001 умноженное на a.
- Далее вычисляется разница между c в квадрате и суммой квадратов a и b (diff = cc - (aa + b*b)).
- Если diff меньше -eps, то возвращается значение 1.
- Если diff больше eps, то возвращается значение 2.
- В противном случае возвращается значение 3. Таким образом, функция triangle_type определяет тип треугольника по его сторонам a, b и c. Возвращаемое значение функции равно 0, если треугольник является вырожденным (т.е. имеет длину стороны равную нулю или отрицательной величине), 1, если треугольник является остроугольным, и 2, если треугольник является прямоугольным.