三角形判断



描述

给定三条边的长度,判断能否组成三角形,如果可以,判断三角形的形状。

输入

一组数据,每行三个实数,在(0,10]之间,精确到小数点后第四位。最后以0 0 0表示结束。

输出

根据每行的数据判断,如果不能组成三角形,则输出“Not a triangle”;如果是“等腰三角形”,则输出“Isosceles triangle”;如果是“直角三角形”,则输出“Right triangle”;如果是“等腰直角三角形”,则输出“Isosceles right triangle”;如果是“等边三角形”,则输出“Equilateral triangle”;否则,输出“General triangle”。最后输出一行“End”。

样例输入

1.4142 1.4142 2
1.0000 4.0000 5.0000
0 0 0

样例输出

Isosceles right triangle
Not a triangle
End

提示


题目来源

GUOJ


//1013
#include "stdio.h"
#include "math.h"

int IsTri(double a,double b,double c)
{
	if(a+b-c>1e-3&&a+c-b>1e-3&&b+c-a>1e-3)
	{
		return 1;
	}
	else
	{
		return 0;
	}
}//是否是三角形

int Equal2(double a,double b,double c)
{
	if((fabs(a-b)<1e-3&&fabs(a-c)>1e-3)||(fabs(a-c)<1e-3&&fabs(a-b)>1e-3)||(fabs(b-c)<1e-3&&fabs(a-c)>1e-3))
	{
		return 1;
	}
	else
	{
		return 0;
	}
}//是否有两边相等

int Right(double a ,double b,double c)
{
	double aa,bb,cc;	
	aa=a*a;
	bb=b*b;
	cc=c*c;
	if(fabs(aa+bb-cc)<1e-3)
	{
		return 1;
	}
	else
	{
		return 0;
	}
}//是否满足勾股定理

int Equal3(double a,double b,double c)
{
	if(fabs(a-b)<1e-3&&fabs(a-c)<1e-3)
	{
		return 1;
	}
	else
	{
		return 0;
	}
}//是否三边相等

int main()
{
	double a,b,c;
	double temp;
	while(1)
	{
		scanf("%lf %lf %lf",&a,&b,&c);
		if(0==a)
		{
			break;
		}
		if(a>b)
		{
			temp=a;
			a=b;
			b=temp;
		}
		if(b>c)
		{
			temp=b;
			b=c;
			c=temp;
		}
		if(IsTri(a,b,c))
		{
			if(Equal2(a,b,c)&&!Equal3(a,b,c)&&!Right(a,b,c))
			{
				printf("Isosceles triangle\n");
			}
			else if(!Equal2(a,b,c)&&Right(a,b,c))
			{
				printf("Right triangle\n");
			}
			else if(Equal2(a,b,c)&&!Equal3(a,b,c)&&Right(a,b,c))
			{
				printf("Isosceles right triangle\n");
			}
			else if(Equal3(a,b,c))
			{
				printf("Equilateral triangle\n");
			}
			else
			{
				printf("General triangle\n");
			}
		}
		else
		{
			printf("Not a triangle\n");
		}
	}
	printf("End\n");
	return 0;
}

abs针对整数

fabs针对浮点数

精度要求

scanf输入输出格式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值