1. 程式人生 > >習題3-5 三角形判斷

習題3-5 三角形判斷

給定平面上任意三個點的座標(x​1​​,y​1​​)、(x​2​​,y​2​​)、(x​3​​,y​3​​),檢驗它們能否構成三角形。

輸入格式:

輸入在一行中順序給出六個[−100,100]範圍內的數字,即三個點的座標x​1​​、y​1​​、x​2​​、y​2​​、x​3​​、y​3​​。

輸出格式:

若這3個點不能構成三角形,則在一行中輸出“Impossible”;若可以,則在一行中輸出該三角形的周長和麵積,格式為“L = 周長, A = 面積”,輸出到小數點後2位。

輸入樣例1:

4 5 6 9 7 8

輸出樣例1:

L = 10.13, A = 3.00

輸入樣例2:

4 6 8 12 12 18

輸出樣例2:

Impossible

注意:

  • 任意兩邊之和大於第三邊才能構成三角形。
  • 用三個邊長來求三角形面積的公式叫:海倫公式。

程式碼:  

#include <stdio.h>
#include <math.h>

int main(void){
	float x1, y1, x2, y2, x3, y3, a, b, c, L = 0, A = 0, p;
	scanf("%f %f %f %f %f %f", &x1, &y1, &x2, &y2, &x3, &y3);
	
	a = sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
	b = sqrt((x1 - x3) * (x1 - x3) + (y1 - y3) * (y1 - y3));
	c = sqrt((x2 - x3) * (x2 - x3) + (y2 - y3) * (y2 - y3));
	if( a + b > c && a + c > b && b + c > a){
		L = a + b + c;
		p = L / 2.0;
		A = sqrt( p * (p - a) * (p - b) * (p - c) );
		printf("L = %.2f, A = %.2f", L, A);
	}else{
		printf("Impossible");
	}
	
	return 0;
}