[2018蓝桥杯A组决赛] A-三角形面积

题解

  方法一:海伦公式

       中学数学中,已知三角形三条边即可求解该三角形的面积,而该公式为海伦公式。

       p = (a + b + c) / 2,s = sqrt(p * (p - a) * (p - b) * (p - c))。

#include <iostream>
#include <cmath>
using namespace std;

double x2, y2, x3, y3, x4, y4;

int main()
{
    x2 = 2.3, y2 = 2.5;
    x3 = 6.4, y3 = 3.1;
    x4 = 5.1, y4 = 7.2;
    // 海伦公式
    // p = (a + b + c) / 2
    // s = sqrt(p * (p - a) * (p - b) * (p - c))
    double a = sqrt((x2 - x3) * (x2 - x3) + (y2 - y3) * (y2 - y3));
    double b = sqrt((x2 - x4) * (x2 - x4) + (y2 - y4) * (y2 - y4));
    double c = sqrt((x3 - x4) * (x3 - x4) + (y3 - y4) * (y3 - y4));
    double p = (a + b + c) / 2.0;
    double s = sqrt(p * (p - a) * (p - b) * (p - c));
    printf("%.3f\n", s);
    return 0;
}

 

  方法二:向量的叉积

       中学向量中,可采用向量的叉积求解三角形面积。

       s = 1 / 2 * (a * b),a = (x2 - x1, y2 - y1),b = (x3 - x1, y3 - y1)。

       x1 = x2 - x1,y1 = y2 - y1。

       x2 = x3 - x1,y2 = y3 - y1。

       s = 1 / 2 * (x1 * y2 - x2 * y1)。

#include <iostream>
using namespace std;

double x2, y2, x3, y3, x4, y4;

int main()
{
    x2 = 2.3, y2 = 2.5;
    x3 = 6.4, y3 = 3.1;
    x4 = 5.1, y4 = 7.2;
    // 向量的叉积
    // s = 1/2 * a * b
    // a = (x3 - x2, y3 - y2) = (x5, y5)
    // b = (x4 - x2, y4 - y2) = (x6, y6)
    double x5 = x3 - x2, y5 = y3 - y2;
    double x6 = x4 - x2, y6 = y4 - y2;
    double s = 0.50 * (x5 * y6 - x6 * y5);
    printf("%.3f\n", s); 
    return 0;
}

 

  方法三:三角形面积公式求解

       可采用 s = 1 / 2 *a * b * sin<a, b>求解。

       最后结果为:

       s = 1 / 2 * | x1 * y2 + x2 * y3 + x3 * y1 - x1 * y3 - x3 * y2 - x2 * y1 | 。

       具体推导可见我的CSDN上的一篇博客:https://blog.csdn.net/weixin_44095278/article/details/98034114

#include <iostream>
#include <cmath>
using namespace std;

double x2, y2, x3, y3, x4, y4;

int main()
{
    x2 = 5.1, y2 = 7.2;
    x3 = 2.3, y3 = 2.5;
    x4 = 6.4, y4 = 3.1;
    double s = 0.50 * fabs(x2 * y3 + x3 * y4 + x4 * y2 - x2 * y4 - x4 * y3 - x3 * y2);
    printf("%.3f\n", s);
    return 0;
}

 

  

  

 

     

posted @ 2020-11-10 15:22  Fool_one  阅读(189)  评论(0编辑  收藏  举报