C时间限制:1 毫秒 | C内存限制:1 Kb
题目内容:
给你三个点,表示一个三角形的三个顶点,求出该三角形的面积。
输入描述
每行是一组测试数据,有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
程序代码//三角形面积==a*b*sinθ/2,而向量叉乘的模,即向量a叉乘向量b的模==向量a的模乘向量b的模*
sin
θ,即此题可以用向量叉乘的模求解
#include<iostream>
#include<math.h>
#include<iomanip>
using namespace std;
int main(){
int x1,y1,x2,y2,x3,y3;
while(cin>>x1>>y1>>x2>>y2>>x3>>y3){
if(x1==0&&y1==0&&x2==0&&y2==0&&x3==0&&y3==0)
break;
int xi=x2-x1,yi=y2-y1;
int xj=x3-x1,yj=y3-y1;
double s=fabs(xi*yj-yi*xj)/2;
cout<<fixed<<setprecision(1)<<s<<endl;
}
return 0;
}
#include<math.h>
#include<iomanip>
using namespace std;
int main(){
int x1,y1,x2,y2,x3,y3;
while(cin>>x1>>y1>>x2>>y2>>x3>>y3){
if(x1==0&&y1==0&&x2==0&&y2==0&&x3==0&&y3==0)
break;
int xi=x2-x1,yi=y2-y1;
int xj=x3-x1,yj=y3-y1;
double s=fabs(xi*yj-yi*xj)/2;
cout<<fixed<<setprecision(1)<<s<<endl;
}
return 0;
}