題目描述
給定平面上任意三個點的座標(x1,y1)、(x2,y2)、(x3,y3),檢驗它們能否構成三角形。
輸入格式:
輸入在一行中順序給出六個[−100,100]範圍內的數字,即三個點的座標x1、y1、x2、y2、x3、y3。
輸出格式:
若這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(){
double x1,y1,x2,y2,x3,y3;
double l1,l2,l3; //邊長
scanf("%lf %lf %lf %lf %lf %lf",&x1,&y1,&x2,&y2,&x3,&y3);
l1=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
l2=sqrt((x1-x3)*(x1-x3)+(y1-y3)*(y1-y3));
l3=sqrt((x2-x3)*(x2-x3)+(y2-y3)*(y2-y3));
if(l1+l2<=l3||l1+l3<=l2||l2+l3<=l1){
printf("Impossible");
return 0;
}
double L,A; //周長 面積
double p; //半周長
L=l1+l2+l3;
p=L/2;
A=sqrt(p*(p-l1)*(p-l2)*(p-l3));
printf("L = %.2f, A = %.2f",L,A);
return 0;
}