1. 程式人生 > >SDUT 2562 相似三角形

SDUT 2562 相似三角形

Problem Description

給出兩個三角形的三條邊,判斷是否相似。

Input

多組資料,給出6正個整數,a1,b1,c1,a2,b2,c2,分別代表兩個三角形。(邊長小於100且無序

Output

如果相似輸出YES,如果不相似輸出NO,如果三邊組不成三角形也輸出NO。

Example Input

1 2 3 2 4 6
3 4 5 6 8 10
3 4 5 7 8 10

Example Output

NO
YES
NO
答案:
#include <iostream>

using namespace std;

int main()
{
	double a[3], b[3], temp;// 需宣告為double型別。原來生命為int型別時,下面判斷是否相似時導致不正確。第一次寫時錯在了宣告為int型別。
while (cin >> a[0] >> a[1] >> a[2] >> b[0] >> b[1] >> b[2]) { if (a[0] + a[1] > a[2] && a[0] + a[2] > a[1] && a[1] + a[2] > a[0] && b[0] + b[1] > b[2] && b[0] + b[2] > b[1] && b[1] + b[2] > b[0])//判斷是否為三角形 { for (int i = 0; i < 2; i++)//將第一個三角形按從小到大排序 { for (int j = 0; j < 2 - i; j++) { if (a[j] > a[j + 1]) { temp = a[j]; a[j] = a[j + 1]; a[j + 1] = temp; } } } for (int m = 0; m < 2; m++)//將第二個三角形按從小到大排序 { for (int n = 0; n < 2 - m; n++) { if (b[n] > b[n + 1]) { temp = b[n]; b[n] = b[n + 1]; b[n + 1] = temp; } } } if (a[0] > b[0])//判斷兩個三角形對應邊哪個較大 { if(a[0] / b[0] == a[1] / b[1] && a[0] / b[0] == a[2] / b[2] && a[1] / b[1] == a[2] / b[2])//判斷是否相似 cout<<"YES"<<endl; else cout<<"NO"<<endl; } else { if(b[0] / a[0] == b[1] / a[1] && b[0] / a[0] == b[2] / a[2] && b[1] / a[1] == b[2] / a[2])//判斷是否相似 cout<<"YES"<<endl; else cout<<"NO"<<endl; } } else { cout<<"NO"<<endl; } } return 0; }