三角形面积
时间限制:
3000 ms | 内存限制:
65535 KB
难度:
2
-
描述
-
给你三个点,表示一个三角形的三个顶点,现你的任务是求出该三角形的面积
-
输入
-
每行是一组测试数据,有6个整数x1,y1,x2,y2,x3,y3分别表示三个点的横纵坐标。(坐标值都在0到10000之间)
输入0 0 0 0 0 0表示输入结束
测试数据不超过10000组
输出
- 输出这三个点所代表的三角形的面积,结果精确到小数点后1位(即使是整数也要输出一位小数位) 样例输入
-
0 0 1 1 1 3 0 1 1 0 0 0 0 0 0 0 0 0
样例输出
-
1.0 0.5
来源
- 计算几何基础 上传者
-
张云聪
题解,考验数学功力的时候到了,海伦公式 s=sqrt(p*(p-a)*(p-b)*(p-c)) p=(a+b+c)/2;
#include<stdio.h> #include<math.h> #include<iostream> using namespace std; double judge(int x,int y,int x0,int y0) { double side=sqrt((x-x0)*(x-x0)+(y-y0)*(y-y0)); return side; } int main() { int x1,x2,x3,y1,y2,y3; double s,a,b,c,p; while(cin>>x1>>y1>>x2>>y2>>x3>>y3,x1||x2||x3||y1||y2||y3) { a=judge(x1,y1,x2,y2); b=judge(x1,y1,x3,y3); c=judge(x2,y2,x3,y3); p=(a+b+c)/2; s = sqrt(p*(p - a)*(p - b)*(p - c)); printf("%.1f\n",s); } }
-
每行是一组测试数据,有6个整数x1,y1,x2,y2,x3,y3分别表示三个点的横纵坐标。(坐标值都在0到10000之间)