一道題目的分享---三角形判斷的程序優化
一道題目的分享


初步分析:
輸入三個點坐標,涉及到平面直角坐標系中距離的計算,需要調用sqrt函數。其次需要利用三角形的性質判斷三邊是否可以構成一個三角形。最后周長計算直接將三邊之長相加。但面積計算需要利用割補法,補全一個矩形再進行面積計算。綜上,考慮到判斷的條件比較復雜,面積計算麻煩,我們需要優化算法。
再分析:(1)考慮到海倫公式可以用來求面積,delta可以用來判斷三邊是否可以構成三角形。我們利用海倫公式優化程序。

(2)對于平面直角坐標系中距離的計算,有明確的公式,因此我們可以定義一個函數,還可以方便日后使用。
流程圖

代碼段
#include <stdio.h>
double len(double a,double b,double c,double d){
double re;
re=sqrt((c-a)*(c-a)+(d-b)*(d-b));
return re;
}
int main(){
double x1,x2,x3,y1,y2,y3;
double a,b,c,delta,L,A,s;
scanf("%lf %lf %lf %lf %lf %lf",&x1,&y1,&x2,&y2,&x3,&y3);
a=len(x1,y1,x2,y2);
b=len(x2,y2,x3,y3);
c=len(x1,y1,x3,y3);//距離的計算
s=(a+b+c)/2;
delta=(s-a)*(s-b)*(s-c);//判斷
if(delta<=0) printf("Impossible\n");
else{
L=2*s;
A=sqrt(s*delta);
printf("L = %.2lf, A = %.2lf\n",L,A);
}
浙公網安備 33010602011771號