您的位置:首页 > 其它

三角形判断

2014-05-14 22:38 197 查看
描述

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

输入

一组数据,每行三个实数,在(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输入输出格式
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: