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; }
-