Проверка треугольника и определение его типа - C (СИ)
Формулировка задачи:
Задача: даны 3 числа, определить, являются ли они сторонами треугольника. Если являются, то какого?
Условным оператором if-else пользоваться нельзя.
Можно пользоваться условным выражением () ? () : ().
Вроде бы работает, но меня смущают 2 момента:
1. Когда присваиваю стороны
2. Когда пропускаю третий оператор в условном выражении. Получается () ? () ? () : () : () Так вообще можно?
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int a, b, c;
double max_st, cos_max_ug, st1, st2;
printf("Enter 3 numbers:");
scanf("%d %d %d", &a, &b, &c);
max_st=(a > b) ? a : b;
st1 = (a < b) ? a : b;
st2 = (max_st < c) ? max_st : c;
max_st = (max_st > c) ? max_st : c;
cos_max_ug = (st1*st1 + st2*st2 - max_st*max_st) / (2 * st1*st2);
(a < b + c) && (b < a + c) && (c < a + b) ?
cos_max_ug < 0 ? printf("Treugolnik tupoj %s\n", st1 == st2 ? "ravnobedrennyj" : "raznostoronnij") :
cos_max_ug == 0.5 ? printf("Treugolnik ravnostoronnij\n") :
cos_max_ug == 0 ? printf("Treugolnik pryamougolnyj %s\n", st1 == st2 ? "ravnobedrennyj" : "raznostoronnij") :
printf("Treugolnik ostrougolnyj %s\n", st1 == st2 ? "ravnobedrennyj" : "raznostoronnij"):
printf("Treugolnika net\n");
}Решение задачи: «Проверка треугольника и определение его типа»
textual
Листинг программы
cos_max_ug == 0.5