题解 B2031 【计算三角形面积】
基础练手题。
基本思路
这是一道在坐标系上的海伦公式计算,首先需要会做计算两点之间距离这题,学会运用勾股定理解决两坐标点间距离计算的问题,再利用海伦秦九韶公式计算这道题目。
推导过程
根据B2030的经验,我们知道:一个平面直角坐标系内有两点
可以用勾股定理求解。
- 海伦秦九韶公式
令三角形三边长分别为
先摆海伦:
但是我们是中国人,所以看看老祖宗的东西,秦九韶公式:
然而实际上这两个柿子是相同的,可以通过乘法公式和因式分解相互推倒。
综上,根据 让人头疼的题目了。
CODE
#include <stdio.h>
#include <math.h>
double x1, y11, x2, y2, x3, y3, a, b, c, p;
inline double dis(double x1, double y11, double x2, double y2) {
return sqrt((x1 - x2) * (x1 - x2) + (y11 - y2) * (y11 - y2));
} //给定坐标计算两点之间距离
int main(void) {
scanf("%lf %lf %lf %lf %lf %lf", &x1, &y11, &x2, &y2, &x3, &y3);
a = dis(x1, y11, x2, y2);
b = dis(x2, y2, x3, y3);
c = dis(x3, y3, x1, y11);
/*
a, b, c为三边边长
*/
p = (a + b + c) / 2; //p为周长一半
printf("%.2lf\n", sqrt(p * (p - a) * (p - b) * (p - c))); //直接用简单的海伦公式即可
return 0;
}
喜欢就点个赞吧qwq