码迷,mamicode.com
首页 > 编程语言 > 详细

【TOJ 5255】C++实验:三角形面积(海伦公式)

时间:2018-05-17 16:52:16      阅读:476      评论:0      收藏:0      [点我收藏+]

标签:提交   xpl   time   namespace   font   otto   col   baidu   ios   

描述

实现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++实验:三角形面积(海伦公式)

标签:提交   xpl   time   namespace   font   otto   col   baidu   ios   

原文地址:https://www.cnblogs.com/kannyi/p/9051611.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!