- Description
给定三条边的长度,判断能否组成三角形,如果可以,判断三角形的形状。
- Input
一组数据,每行三个实数,在(0,10]之间,精确到小数点后第四位。最后以0 0 0表示结束。
- Output
根据每行的数据判断,如果不能组成三角形,则输出“Not a triangle”;如果是“等腰三角形”,则输出“Isosceles triangle”;如果是“直角三角形”,则输出“Right triangle”;如果是“等腰直角三角形”,则输出“Isosceles right triangle”;如果是“等边三角形”,则输出“Equilateral triangle”;否则,输出“General triangle”。最后输出一行“End”。
- Sample Input
1.4142 1.4142 2
1.0000 4.0000 5.0000
0 0 0
- Sample Output
Isosceles right triangle
Not a triangle
End
#include<iostream>
using namespace std;
#define eps 1e-3
int main()
{
// freopen("in.txt","r",stdin);
while(1)
{
double a,b,c;
cin>>a>>b>>c;
if(a<eps&&b<eps&&c<eps)
{
cout<<"End"<<endl;
break;
}
double e;
if(a<b)
{
e=a;
a=b;
b=e;
}
if(a<c)
{
e=a;
a=c;
c=e;
}
if(b<c)
{
e=b;
b=c;
c=e;
}
if(b+c>a)
{
if(b-c<eps)
{
if(a-b<eps)
cout<<"Equilateral triangle"<<endl;
else if(b*b+c*c-a*a<eps&&a*a-b*b-c*c<eps)
cout<<"Isosceles right triangle"<<endl;
else
cout<<"Isosceles triangle"<<endl;
}
else if(a-b<eps)
{
if(b-c<eps)
cout<<"Equilateral triangle"<<endl;
else
cout<<"Isosceles triangle"<<endl;
}
else if(b*b+c*c-a*a<eps&&a*a-b*b-c*c<eps)
cout<<"Right triangle"<<endl;
else
cout<<"General triangle"<<endl;
}
else
cout<<"Not a triangle"<<endl;
}
return 0;
}