C/C++

Задача по C++

Даны три натуральных числа A, B, C. Определите, существует ли треугольник с такими сторонами. Если треугольник существует, выведите строку YES, иначе выведите строку NO.
Треугольник — это три точки, не лежащие на одной прямой.
Формат входных данных
Вводятся три числа.
Формат выходных данных
Выведите ответ на задачу.

Вот мой код, скопируйте и проверьте все работает, но эта задача из академии Stepik, и мне пишет что ошибка

#include <iostream>

using namespace std;

int main()

{
int a, b, c;
cin >> a >> b >> c;
if (a + b > c)
{

if (a + b < c || b + c < a || c + a < b)
{
cout << "NO" << endl;
}
else
{
cout << "YES" << endl;
}

}

else if (b + c > a)
{

if (a + b < c || b + c < a || c + a < b)
{
cout << "NO" << endl;
}
else
{
cout << "YES" << endl;
}

}

else if (a + c > b)
{

if (a + b < c || b + c < a || c + a < b)
{
cout << "NO" << endl;
}
else
{
cout << "YES" << endl;
}

}

else if(b + a == c || b + c == a || c + a == b)
{
cout<<"NO";
}


}
#include <iostream>
using namespace std;
int main() {
unsigned a, b, c;
cin >> a >> b >> c;
auto p = (a + b + c) / 2.0;
auto x = p * (p - a) * (p - b) * (p - c);
if (x > 0) puts("YES");
else puts("NO");
}
Сергей Поликанин
Сергей Поликанин
76 865
Лучший ответ
Сергей Сытник Можно использовать только оператор if
Антоха Николай!
puts выводит через stdout?

Если да, то Степик примет решение.
Рома Котенко Даны три НАТУРАЛЬНЫХ числа A, B, C.
Если вводятся только натуральные числа, тогда ещё проще:
#include <iostream>
int main() { unsigned long long a, b, c;
std::cin >> a >> b >> c; if (a + b <= c ||
b + c <= a || c + a <= b) std::cout << "NO";
else std::cout << "YES"; }
Сергей Сытник а если стороны равны?
Лучше так как-нибудь так:

#include <iostream>
int main()
{ long long a, b, c; std::cin >> a >> b >> c;
if (a <= 0 || b <= 0 || c <= 0 ||a + b <= c ||
b + c <= a || c + a <= b) std::cout << "NO";
else std::cout << "YES"; std::cout << std::endl;
system("pause > null"); return 0; }

А на что может ругаться? Например, на величину значений a, b или c. Вводим a=30000000000, b=40000000000, c=50000000000. Что введётся, если заказаны типы int, unsigned int или long unsigned? Да фиг его знает! Может считать работу программы неправильной и в случае a=1, b=2 и c=3, ведь фактически такого треугольника не существует! И уж тем более не существует треугольников с неположительными сторонами, то есть с отрицательными или нулевыми (•‿•)
Антоха ⟨ АПЛОДИСМЕНТЫ ⟩
Единственное, на что ругается тестирующая система, это то, что Вы выводите более того, о чём Вас просят.

Уберите вывод endl.
Хуршед Шарофзода Решать прежде нужно математически, а только потом программировать.

У одной и той же задачи может быть несколько различных решений, которые все приводят к одинаковому результату.
Хуршед Шарофзода После того, как хотя бы одно из решений будет принято тестирующей системой, Вас пропустят на Форум решений.

Советую Вам просмотреть какие-нибудь из решений. Подумайте, сделайте выводы.
Хуршед Шарофзода В рамках того самого урока должно быть очень простое условное выражение:

(a + b > c && a + c > b && b + c > a)
Хуршед Шарофзода ★ Кстати, если кто захочет знать, Степик тестирует программы методом «чёрного ящика». Тестирующей системе совершенно безразлично, каким способом решена задача, никто и ничто не просматривает код программы. Все тесты это наборы правильных или ошибочных входных и выходных данных.

Мне искренне жаль, но безразличие Степика позволяет учащимся вместо правильных решений отправлять самые сущие читы. Всё зависит от совести того, кто выполняет задание.