描述
实现C++三角形类,其中包含3个点(CPoint类型),并完成求面积。
主函数里的代码已经给出,请补充完整,提交时请勿包含已经给出的代码。
int main() { CPoint p1, p2, p3; while(cin>>p1>>p2>>p3) { CTriangle t(p1, p2, p3); cout<<setiosflags(ios::fixed)<<setprecision(3)<<t.Area()<<endl;//调用求面积函数输出 } return 0; }
输入
输入数据有多组,每组包含x1, y1, x2, y2, x3, y3六个整数,表示三个点(x1, y1)、(x2, y2)、(x3, y3),三点不共线。
输出
每组输出一个值,即三角形面积,保留3位小数。
样例输入
0 0 0 1 1 0
样例输出
0.500
题解
海伦公式:
公式中a,b,c分别为三角形三边长,p为半周长,S为三角形的面积。
#include<iomanip> #include<iostream> #include<cmath> using namespace std; class CPoint{ public: int x,y; CPoint(int x=0,int y=0):x(x),y(y){} friend istream &operator>>(istream &is,CPoint&p) { is>>p.x>>p.y; return is; } }; class CTriangle{ public: CPoint p1,p2,p3; CTriangle(CPoint p1,CPoint p2,CPoint p3):p1(p1),p2(p2),p3(p3){} double Area() { double a=sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y)); double b=sqrt((p1.x-p3.x)*(p1.x-p3.x)+(p1.y-p3.y)*(p1.y-p3.y)); double c=sqrt((p3.x-p2.x)*(p3.x-p2.x)+(p3.y-p2.y)*(p3.y-p2.y)); double p=(a+b+c)*0.5; double s=sqrt(p*(p-a)*(p-b)*(p-c)); return s; } }; int main() { CPoint p1, p2, p3; while(cin>>p1>>p2>>p3) { CTriangle t(p1, p2, p3); cout<<setiosflags(ios::fixed)<<setprecision(3)<<t.Area()<<endl;//调用求面积函数输出 } return 0; }
原文地址:https://www.cnblogs.com/kannyi/p/9051611.html
时间: 2024-10-07 00:59:16