NYOJ 815 三角形【海伦公式】

/*

关键点:海伦公式

解题人:lingnichong

解题时间:2014-10-04 21:48:47

解题体会:海伦公式的使用

*/

三角形

时间限制:1000 ms  |  内存限制:65535 KB

难度:1

描述

在数学中,如果知道了三个点的坐标,我们就可以判断这三个点能否组成一个三角形;如果可以组成三角形,那么我们还可以求出这个三角形的面积。作为一个大学生,如果给你三个点的坐标,你能快速判断出这三个点能组成一个三角形吗?如果可以组成三角形,你能快速求出三角形的面积吗?

输入
第一行输入一个整数N(1 ≤ N ≤ 100),表示有N组测试数据。

接下来有N行,每行包括六个数x1,y1,x2,y2,x3,y3,分别代表三个点的坐标。

(0 ≤ x1,y1,x2,y2,x3,y3 ≤ 15)

输出
根据点的坐标判断这三个点能不能组成一个三角形,如果可以组成三角形,输出这个三角形的面积,结果保留3位小数;否则,输出“Can not form a triangle.”。
样例输入
3
0 0 1 1 2 0
0 0 1 0 2 0
0 0 0 2 2 0
样例输出
1.000
Can not form a triangle.
2.000

#include<stdio.h>
#include<math.h>
int main()
{
    int n;
    double x1,y1,x2,y2,x3,y3,S;
    double a,b,c,p;
    scanf("%d",&n);
    while(n--)
    {
        scanf("%lf%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&x3,&y3);
        a=sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
        b=sqrt((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2));
        c=sqrt((x3-x1)*(x3-x1)+(y3-y1)*(y3-y1));
    	if(a+b>c&&a+c>b&&b+c>a)
    	{
    	    p=a+b+c;
        	S=(sqrt(p*(p-2*a)*(p-2*b)*(p-2*c)))/4;
        	printf("%.3lf\n",S);
    	}
    	else
    	{
	        printf("Can not form a triangle.\n");
    	}  

    }
    return 0;
}    
时间: 2024-08-06 16:05:42

NYOJ 815 三角形【海伦公式】的相关文章

nyoj 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 3 0 1 1 0

NYOJ 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 3 0 1 1 0

椭圆的周长与面积_来自一张老外的作业纸

        高中搞了那么久解析几何,翻来翻去那么久的圆锥曲线,居然没考虑过椭圆的周长面积,实在罪过罪过,其实面积是考虑过的,长短周同的时候就变成圆面积公式了.         今天看到老外的一张作业纸,里面内容如下:         第一段就是介绍我们熟悉的三角形海伦公式啦,然后做一下变形,后半部分他就用类似变形的海伦公式的套路讲了椭圆的周长以及面积.然后圆石椭圆的特殊情况,长短周相同就是. 这里叫我们采用的周长公式是: 当然他说这个是个近似公式,还有一个更精确的公式: 面积当然就是PI*a

三角形面积计算(海伦公式或叉积绝对值的一半)

#include <iostream> #include <cmath> using namespace std; struct Point { float x; float y; Point(float a, float b) : x(a), y(b) { } }; double Length(Point & A, Point & B) { return sqrt(pow(A.x - B.x, 2) + pow(A.y - B.y, 2)); } double A

NYOJ 659 判断三角形

判断三角形 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 小明非常喜欢研究三角形.现在,小明已经知道三角形的三条边,如果三条边能组成三角形,小明就会很高兴,他就会得到一个"YE",如果他经过进一步的研究知道它又是等腰三角形, 他又会得一个"YE",他再次研究出它又是一个等边三角形,当然,他又会得到一个"YE". 小明当然不想自己判断了!那请你帮他写一个程序计算出给你三条边小明会得到几个"YE"?

【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()<<e

海伦公式求三角形垂线长度

/** * @Title: getVerticalVal * @Description: TODO(海伦公式求三角形垂线长度) * @param a 长度 * @param b 长度 * @param c 长度 * @return double 返回垂直线长度 * @throws */ private static double getVerticalVal(Double a,Double b,Double c){ double p=(a+b+c)/2; double k=p*(p-a)*(p-

三角形面积(海伦公式)

来自: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

nyoj 491 幸运三角形 【DFS】+【打表】

幸运三角形 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 话说有这么一个图形,只有两种符号组成('+'或者'-'),图形的最上层有n个符号,往下个数依次减一,形成倒置的金字塔形状,除第一层外(第一层为所有可能情况),每层形状都由上层决定,相邻的符号相同,则下层的符号为'+',反之,为'-';如下图所示(n = 3 时的两种情况): 如果图中的两种符号个数相同,那这个三角形就是幸运三角形,如上图中的图(2). 输入 有多组测试数据(少于20组). 每行含一个整数n(