LINUX.ORG.RU

История изменений

Исправление 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-нет
}