寄往月球

导航

一道题目的分享---三角形判断的程序优化

一道题目的分享

 

 

 

初步分析:

输入三个点坐标,涉及到平面直角坐标系中距离的计算,需要调用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);

       }  

posted on 2021-09-26 20:52  寄往月球  阅读(129)  评论(1编辑  收藏  举报