Не могу довести до конца задачу, вот условие:
определить вид треугольника (прямоугольный тупоугольный остроугольный) для трех значений отрезков.
Вот код который есть:
#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;
}
нужно еще какое-то условие, не могу понять какое, при значениях египетского треугольника, выводи прямой, при остальных значениях только острый. как исправить, помогите пожалуйста кто может
Другие языки программирования и технологии
Помогите с программированием на Си. Задача про треугольники
Все правильно, если хотя-бы один угол острый выдается сообщение "остряк" и работа заканчивается, а у тупоугольного только один тупой, а два острых угла :)
проверяй сначала условие тупоугольного, а уже потом - остроугольного
PS: и где условие существования треугольника? Например стороны 1, 1, 3 какой выдадут ответ?
проверяй сначала условие тупоугольного, а уже потом - остроугольного
PS: и где условие существования треугольника? Например стороны 1, 1, 3 какой выдадут ответ?
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;
}
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;
}
Sergei Serko
не подходит. нужно через "if" "else" на Си, а не С++
По теореме косинусов считаешь все три угла и смотришь, что получилось. В общем-то, достаточно посчитать первый, второй легче считать по теореме синусов, а третий — вычитанием суммы первых двух из 180.
По первому найденному углу, если он больше 90, то это уже тупоугольный, можно не считать дальше. Если он 90, то уже прямой, и можно не считать.
Как выше правильно написали, сперва нужно убедиться, что треугольник вообще существует.
По первому найденному углу, если он больше 90, то это уже тупоугольный, можно не считать дальше. Если он 90, то уже прямой, и можно не считать.
Как выше правильно написали, сперва нужно убедиться, что треугольник вообще существует.
Sergei Serko
Не углы. Длинны сторон
Похожие вопросы
- Помогите с программированием на Си
- Помогите с программированием на си
- Привет, помогите с программированием на СИ, передача массива в функцию..
- Помогите пожалуйста найти ошибку в задаче (Язык программирования Си)
- Посоветуйте книги по программированию на Си.
- Какой язык программирования сможет решить задачу? (Pascal не смог)
- Помогите пожалуйста составить решение с задачей по программированию(на любом языке программирования)
- Помогите с программированием СИ
- Помогите с программированием(а именно с задачей на С++)
- Помогите пожалуйста решить задачи по программированию. P.S: задачи по паскалю.