【知识补充】-控制输出小数位数
【问题描述】
已知三角形的三个顶点的坐标,求该三角形的面积。
【输入形式】
有多组测试数据。
每组测试数据占一行,6个用空格分隔开的浮点数:x1,y1,x2,y2,x3,y3。表示三角形三个顶点的坐标。
一行6个0(形如0 0 0 0 0 0),表示输入结束,并且不需要处理。
40%的顶点坐标 -10 ≤ xi,yi≤ 10;i=1,2,3
30%的顶点坐标 -100 ≤ xi,yi≤ 100;i=1,2,3
20%的顶点坐标 -1000 ≤ xi,yi≤ 1000;i=1,2,3
10%的顶点坐标 -10000 ≤ xi,yi≤ 10000;i=1,2,3
【输出形式】
对于每组测试数据,输出对应三角形面积,保留小数点后6位。
【样例输入】
1 2 3 4 -2 8
0 0 0 1 1 0
0 0 0 0 0 0
【样例输出】
9.000000
0.500000
题解
思路
- 1.三个坐标先求三边
- 2.直接使用海伦公式就可以了
- 注意:输出控制六位小数
代码
#include<iostream>
#include<cmath>
#include<iomanip>
using namespace std;
int main(){
double xa,xb,xc,ya,yb,yc;
while(cin>>xa>>ya>>xb>>yb>>xc>>yc){
if(xa==0&&xb==0&&xc==0&&ya==0&&yb==0&&yc==0) break;
double a=sqrt(pow((xa-xb),2)+pow((ya-yb),2));
double b=sqrt(pow((xb-xc),2)+pow((yb-yc),2));
double c=sqrt(pow((xc-xa),2)+pow((yc-ya),2));
double p=(a+b+c)/2;
double s=sqrt(p*(p-a)*(p-b)*(p-c));
cout<<fixed<<setprecision(6)<<s<<endl;
}
return 0;
}