Другие языки программирования и технологии

Помогите с программированием на Си. Задача про треугольники

Не могу довести до конца задачу, вот условие:
определить вид треугольника (прямоугольный тупоугольный остроугольный) для трех значений отрезков.

Вот код который есть:

#include

int main()
{
int a, b, c;
printf("a="); scanf("%d", &a);
printf("b="); scanf("%d", &b);
printf("c="); scanf("%d", &c);
if ((a*a+b*b==c*c)||(a*a+c*c==b*b)||(c*c+b*b==a*a)) printf("pryamoy\n");
else if ((a*a+b*b>c*c)||(a*a+c*c>b*b)||(b*b+c*c>a*a)) printf("ostryak\n");
else if ((a*a+b*b<c*c)||(a*a+c*c<b*b)||(b*b+c*c<a*a)) printf("tupoy\n");
else printf("YOU LOSE\n");

return 0;
}

нужно еще какое-то условие, не могу понять какое, при значениях египетского треугольника, выводи прямой, при остальных значениях только острый. как исправить, помогите пожалуйста кто может
Sergei Serko
Sergei Serko
802
Все правильно, если хотя-бы один угол острый выдается сообщение "остряк" и работа заканчивается, а у тупоугольного только один тупой, а два острых угла :)
проверяй сначала условие тупоугольного, а уже потом - остроугольного

PS: и где условие существования треугольника? Например стороны 1, 1, 3 какой выдадут ответ?
Андрей Дашевич
Андрей Дашевич
93 015
Лучший ответ
Sergei Serko остряк
const char* triangle(double a, double b, double c) {
double sm = a + b + c, mx = a, mn = a, md, x, y;
if (b > mx) mx = b;
if (c > mx) mx = c;
if (b < mn) mn = b;
if (c < mn) mn = c;
md = sm - mx - mn;
x = mx * mx;
y = mn * mn + md * md;
if (x > y) return "тупоугольный";
else if (x < y) return "остроугольный";
return "прямоугольный";
}
int exist(double a, double b, double c) {
double mx = a;
if (b > mx) mx = b;
if (c > mx) mx = c;
return mx < a + b + c - mx;
}
Георгий Кухарь
Георгий Кухарь
84 858
Sergei Serko не подходит. нужно через "if" "else" на Си, а не С++
По теореме косинусов считаешь все три угла и смотришь, что получилось. В общем-то, достаточно посчитать первый, второй легче считать по теореме синусов, а третий — вычитанием суммы первых двух из 180.
По первому найденному углу, если он больше 90, то это уже тупоугольный, можно не считать дальше. Если он 90, то уже прямой, и можно не считать.
Как выше правильно написали, сперва нужно убедиться, что треугольник вообще существует.
ДK
Дмитрий Kuzmin
79 906
Sergei Serko Не углы. Длинны сторон