【TOJ 5255】C++實驗:三角形面積(海倫公式)
阿新 • • 發佈:2018-05-17
esc man opera time public 三角形面積 AC pac 公式
描述
實現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; }
【TOJ 5255】C++實驗:三角形面積(海倫公式)