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

描述

实现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

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

叉乘、快速排斥与跨立实验及求取三角形面积

<pre name="code" class="cpp">叉乘 (一)判断方向 (二)判断线段相交 (三)求三角形面积 (一)判断方向 叉乘的性质如下: (1). P x Q > 0; 表示P在Q的顺时针方向; (2). p x Q < 0; 表示P在Q的逆时针方向; (3). P x Q = 0; 表示P和Q是共线的 P(x1,y1),Q(x2,y2), P*Q=x1y2-x2y1 判断结果三种状态 模版为: struct point {

三角形面积(海伦公式)

来自:http://www.oschina.net/code/snippet_149523_14180 描述 给你三个点,表示一个三角形的三个顶点,现你的任务是求出该三角形的面积 输入 每行是一组测试数据,有6个整数x1,y1,x2,y2,x3,y3分别表示三个点的横纵坐标.(坐标值都在0到10000之间)输入0 0 0 0 0 0表示输入结束测试数据不超过10000组 输出 输出这三个点所代表的三角形的面积,结果精确到小数点后1位(即使是整数也要输出一位小数位) 样例输入 0 0 1 1 1

实验3-8 输出三角形面积和周长 (15分)

本题要求编写程序,根据输入的三角形的三条边a.b.c,计算并输出面积和周长.注意:在一个三角形中, 任意两边之和大于第三边.三角形面积计算公式:?,其中). 输入格式: 输入为3个正整数,分别代表三角形的3条边a.b.c. 输出格式: 如果输入的边能构成一个三角形,则在一行内,按照 area = 面积; perimeter = 周长 的格式输出,保留两位小数.否则,输出 These sides do not correspond to a valid triangle 输入样例1: 5 5 3

nyist 67三角形面积

三角形面积时间限制:3000 ms | 内存限制:65535 KB 难度:2描述 给你三个点,表示一个三角形的三个顶点,现你的任务是求出该三角形的面积输入每行是一组测试数据,有6个整数x1,y1,x2,y2,x3,y3分别表示三个点的横纵坐标.(坐标值都在0到10000之间)输入0 0 0 0 0 0表示输入结束测试数据不超过10000组输出输出这三个点所代表的三角形的面积,结果精确到小数点后1位(即使是整数也要输出一位小数位)样例输入0 0 1 1 1 30 1 1 0 0 00 0 0 0

几何-三角形面积

1 (面积=底×高÷2.其中,a是三角形的底,h是底所对应的高)注释:三边均可为底,应理解为:三边与之对应的高的积的一半是三角形的面积.这是面积法求线段长度的基础. 2 (其中,三个角为∠A,∠B,∠C,对边分别为a,b,c.参见三角函数) 3 (l为高所在边中位线) 4 (海伦公式),其中 [5] 5 (其中,R是外接圆半径) 6 (其中,r是内切圆半径) 7 在平面直角坐标系内,A(a,b),B(c,d),C(e,f)构成之三角形面积为 .[6]  A,B,C三点最好按逆时针顺序从右上角开始

BZOJ 1845: [Cqoi2005] 三角形面积并 [计算几何 扫描线]

1845: [Cqoi2005] 三角形面积并 Time Limit: 3 Sec  Memory Limit: 64 MBSubmit: 1151  Solved: 313[Submit][Status][Discuss] Description 给出n个三角形,求它们并的面积. Input 第一行为n(N < = 100), 即三角形的个数 以下n行,每行6个整数x1, y1, x2, y2, x3, y3,代表三角形的顶点坐标.坐标均为不超过10 ^ 6的实数,输入数据保留1位小数 Out

三角形面积

如图1所示.图中的所有小方格面积都是1. 那么,图中的三角形面积应该是多少呢? 请填写三角形的面积.不要填写任何多余内容或说明性文字.

bzoj 1845: [Cqoi2005] 三角形面积并 扫描线

1845: [Cqoi2005] 三角形面积并 Time Limit: 3 Sec  Memory Limit: 64 MBSubmit: 848  Solved: 206[Submit][Status][Discuss] Description 给出n个三角形,求它们并的面积. Input 第一行为n(N < = 100), 即三角形的个数 以下n行,每行6个整数x1, y1, x2, y2, x3, y3,代表三角形的顶点坐标.坐标均为不超过10 ^ 6的实数,输入数据保留1位小数 Outp

rwkj 1363 正方形 长方形 三角形面积

C++:重载函数2(计算面积)时间限制(普通/Java):1000MS/3000MS 运行内存限制:65536KByte总提交:370 测试通过:241 描述 定义重载函数area(),分别计算正方形.长方形和三角形的面积. 输入 共计有3行. 第1行有一个实数,为正方形的边长: 第2行有二个实数,为长方形的两条边长: 第3行有三个实数,为三角形的三边长. 输出 正方形.长方形和三角形的面积(保留3位小数). 样例输入 3.54.2 5.623.0 4.0 5.0 样例输出 12.25023.6