-
描述
-
给你三个点,表示一个三角形的三个顶点,现你的任务是求出该三角形的面积
-
输入
-
每行是一组测试数据,有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
-
每行是一组测试数据,有6个整数x1,y1,x2,y2,x3,y3分别表示三个点的横纵坐标。(坐标值都在0到10000之间)
#include<cstdio>
#include<cmath>
struct Point
{
double x,y;
};
struct Point p[3];
int main()
{
int i;
while(1)
{
for(i=0;i<3;i++)
scanf("%lf%lf",&p[i].x,&p[i].y);
if (!(p[0].x||p[0].y) &&!(p[1].x||p[1].y)&&!(p[2].x||p[2].y))
break;
double x = p[0].x-p[1].x; //算出BA向量B->A
double y = p[0].y - p[1].y;
double x2 = p[2].x - p[1].x; //算出BC向量B->C
double y2 = p[2].y - p[1].y;
printf("%.1f\n",fabs((x*y2 - y*x2)/2)); //向量叉积计算有方向性,故需要加绝对值,并且计算出的是相对应的平行四边形面积,需要除以2
}
return 0;
}