Задача взята с сайта e-olymp
Задача
По заданным длинам трех отрезков определить, можно ли из них составить невырожденный треугольник. Треугольник называется невырожденным, если его площадь больше 0.
Входные данные
Три натуральных числа $a, b, c (1 ≤ a, b, c ≤ 1000)$ — длины трех отрезков.
Выходные данные
Вывести YES если из отрезков можно составить невырожденный треугольник и NO в противном случае.
Тесты
# | ВХОДНЫЕ ДАННЫЕ | ВЫХОДНЫЕ ДАННЫЕ |
---|---|---|
1 | 5 6 7 | YES |
2 | 3 7 4 | NO |
3 | 16 24 32 | YES |
4 | 54 1 100 | NO |
5 | 1 1 1 | YES |
Код программы (Ветвление)
1 2 3 4 5 6 7 8 9 |
#include <iostream> using namespace std; int main() { int a, b, c; cin >> a >> b >> c; cout << (a < b + c && b < a + c && c < a + b ? "YES" : "NO"); return 0; } |
Код программы (Линейные вычисления)
1 2 3 4 5 6 7 8 9 10 11 12 |
#include <iostream> using namespace std; int main() { int a, b, c; cin >> a >> b >> c; bool condition = (a < b + c && b < a + c && c < a + b); cout << (char)(condition * 'Y' + !condition * 'N') << (char)(condition * 'E' + !condition * 'O') << (char)(condition * 'S' + !condition * ' '); return 0; } |
Решение задачи
Пусть $a, b, c$ – длины трех отрезков. Из них можно составить невырожденный треугольник, если длина каждых двух отрезков больше длины третьего (это условие известно как неравенство треугольника): | $b$ | < | $a$ | + | $c$ | \begin{cases} b + c > a\\a + c > b\\a + b > c\end{cases}
Ссылки
Условие задачи на e-olymp
Код программы на ideone (Линейные вычисления)
Код программы на ideone (Ветвление)
Переменные $a, b, c$ должны быть оформлены как формулы. Модули можно делать так $|b|<|a|$ ( просто |)
Я зачту это за алгоритмы с ветвлением, но второй код лучше убрать. Мы ведь обсуждали, когда нужно делать ветвление условным оператором, а когда тернарной операцией?
И, пожалуйста, уберите кириллицу из постоянной ссылки (адреса) Вашей записи.
Тогда останется только отыскать трюк с помощью которого удастся решить задачу без использования ветвления.
Пожалуйста, исправьте самое первое замечание.
Спасибо, теперь точно исправила.
Извините, не поняла сначала.
К сожалению, нет. Внимательно посмотрите всю статью и исправьте везде. Не торопитесь.