首先,在给定三个边长度的情况下,锐角、钝角、直角三角形只会出现一个,因此我们要把他放在同一个判断情况下
其次要判断是否是三角形,必须满足任意两边之和大于第三边
再者,网上的博客说锐角三角形判断方法为最长边的平方小于其余两条平方和,钝角三角形判断方法为最长边平方大于其余两条平方和
我们当然可以对三边进行排序(我刚开始没想到,再根据上述描述算即可
或者根据余弦定理,
当三个角α,β,γ均为锐角必为锐角三角形,即为
a*a+b*b >c*c && a*a+c*c >b*b && b*b+c*c>a*a
只要α,β,γ其中一个角大于90°,必为钝角,即cosγ(cosα/β)<0
即为
a*a+b*b <c*c||a*a+c*c <b*b || b*b+c*c<a*a
综上所述,代码如下
#include
#include
#include
#include
#include
#include
using namespace std;
int main(){
int a,b,c;
cin >>a>>b>>c;
if(a+b <=c ||a+c<=b || b+c <=a )
{
cout <<"Not triangle";
return 0;
}
else if(a*a+b*b ==c*c ||a*a+c*c ==b*b || b*b+c*c==a*a)
cout <<"Right triangle"<<endl;
else if(a*a+b*b >c*c&&a*a+c*c >b*b&&b*b+c*c>a*a)
cout <<"Acute triangle"<<endl;
else if(a*a+b*b <c*c||a*a+c*c <b*b || b*b+c*c<a*a)
cout <<"Obtuse triangle"<<endl;
if(a==b||a==c||b==c)
cout <<"Isosceles triangle"<<endl;
if(a==b&&b==c)
cout <<"Equilateral triangle"<<endl;
}