История изменений
Исправление MKuznetsov, (текущая версия) :
Код должен быть максимально простым, так проще недопускать ошибок.
template<typename T>
int stdPif(T a,T b,T c)
{
if (a>b) std::swap(a,b);
if (b>c) std::swap(b,c); // теперь с-потенциальная гипотенуза
if (a<1 || b<1 || a/2+b/2>c/2 ) return -1; // не треугольник
// если не проверять переполнения
return std::sqrt(a*a+b*b)==c; // true-треугольник,false-нет
}
Исходная версия MKuznetsov, :
Код должен быть максимально простым, так проще недопускать ошибок.
template<typename T>
int stdPif(T a,T b,T c)
{
if (a>b) std::swap(a,b);
if (b>c) std::swap(b,c); // теперь с-потенциальная гипотенуза
if (a<1 || b<1 || a/2+b/2>c/2 ) return -1; // не треугольник
// если не проверять переполнения
return a*a+b*b==std::sqrt(c); // true-треугольник,false-нет
}