已知三角形三个顶点在直角坐标系下的坐标分别为:
(2.3, 2.5)
(6.4, 3.1)
(5.1, 7.2)
- 1
- 2
- 3
求该三角形的面积。
输出
要求精确到小数后3位,如不足3位,需要补零。
第一种方法:海伦公式
a,b,c为三角形的边长,p=(a+b+c)/2
s=根号下p*(p-a)*(p-b)*(p-c)
#include <iostream>
#include<cmath>
using namespace std;
double len(double x1,double y1,double x2,double y2){ //两点距离
return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
}
int main()
{
double a,b,c,p,s;
a = len(2.3,2.5,6.4,3.1); //三条边长 a b c
b = len(2.3,2.5,5.1,7.2);
c = len(6.4,3.1,5.1,7.2);
p = (a+b+c)/2; //半周长
s = sqrt(p*(p-a)*(p-b)*(p-c)); //面积公式
printf("%.3f",s); //保留三位
return 0;
}
第二种办法:向量的叉积
三角形ABC 向量AB=(x1,y1);向量AC=(x2,y2);S=0.5 * | ( x1y2-x2y1 ) |
本题学到的知识点:
1.保留n位小数:printf("%.nf",x);
2.求三角形面积的两种方法