C:判断三角形类型
- 总Time Limit:
- 1000ms
- Memory Limit:
- 65536kB
- Description
-
给定三角形的三条边:a, b, c。判断该三角形类型。
- Input
-
第一行是测试数据个数n(n < 1000),
随后n行每一行有3个正整数(数值不超过20000),分别为三角形的三条边的边长。 - Output
- 对于每组输入,判断三角形类型。输出“dyzj”表示等腰直角三角形、“ptzj”表示普通直角三角形;“db”等边三角形、“dyrj”等腰锐角三角形、“ptrj”普通锐角三角形;“dydj”等腰钝角三角形、“ptdj”普通钝角三角形;“bssjx”不能组成三角形。
- Sample Input
-
2
3 4 5
30 30 30 - Sample Output
-
ptzj
db - Hint
-
两条较短边的平方和大于最长边的平方,此三角形就是锐角三角形;
两条较短边的平方和小于最长边的平方,此三角形就是钝角三角形;
两条边短边的平方和等于最长边的平方,此三角形就是直角三角形. - Source
- 医学部助教-刘璐-高良才助教
-
- 解题方法: 首先判断能不能组成 三角形 , 然后依次判断 直角三角形 钝角三角形 和锐角三角形
- 再在直角三角形中判断 等腰直角三角形
- 在锐角三角形中判断 等腰三角形 然后在等腰三角形中判断等边三角形
- 在钝角三角形中判断 等腰三角形
-
- 源代码:
-
#include<iostream>
using namespace std;
void buble(int a[], int n)
{
int i , j , tmp;
for(i = 0 ; i < n; i++)
{
for(j = 0; j < n -1- i; j++)
{
if(a[j] >a[j+1])
{
tmp = a[j];
a[j] = a[j+1];
a[j+1] = tmp;
}
}
}
}
bool tringle(int a, int b , int c)
{
if(a+b <= c || a+c <= b || b+c <= a)
{
return false;
}
return true;
}
int main()
{
int num[4];
int n , i;
cin>>n;
while(n--)
{
int a, b, c;
for(i = 0 ; i< 3; i++)
{
cin>>num[i];
}
buble(num, 3);
a = num[0]; b = num[1]; c = num[2];
if(tringle(a, b, c))
{
if(a*a + b*b == c*c)
{
if(a == b )
{
cout<<"dyzj"<<endl;
}
else
{
cout<<"ptzj"<<endl;
}
}
if(a*a + b*b < c*c)
{
if(a == b || a == c || b == c)
{
cout<<"dydj"<<endl;
}
else
{
cout<<"ptdj"<<endl;
}
}
if(a*a + b*b > c*c)
{
if(a == b || a == c || b == c)
{
if(a == b && b == c)
{
cout<<"db"<<endl;
}
else
{
cout<<"dyrj"<<endl;
}
}
else
{
cout<<"ptrj"<<endl;
}
}
}
else
{
cout<<"bssjx"<<endl;
}
}
return 0;
}
-