三角形判断
时间限制(普通/Java) : 1000MS/ 3000 MS 运行内存限制 : 65536 KByte
总提交 : 3151 测试通过 : 524
比赛描述
给定三条边的长度,判断能否组成三角形,如果可以,判断三角形的形状。
输入
一组数据,每行三个实数,在(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
来自
#include
#include
voidshow_result(float a,float b,float c);
int main()
{
int i=0,j;
float a[300],b[300],c[300];
scanf("%f %f%f",&a[i],&b[i],&c[i]);
while(a[i]!=0||b[i]!=0||c[i]!=0)
{
i++;
scanf("%f %f%f",&a[i],&b[i],&c[i]);
}
for(j=0;j
show_result(a[j],b[j],c[j]);
printf("End\n");
return 0;
}
voidshow_result(float a,float b,float c)
{
float max,mini,mid;
max=(a>b?a:b)>c?(a>b?a:b):c;
mini=(a
mid=a+b+c-max-mini;
if(max!=0&&mid!=0&&mini!=0)
{
if(max { if(max==mid||mid==mini) { if(fabs(max*max-(mini*mini+mid*mid))<0.001) printf("Isoscelesright triangle\n"); elseif(max==mid&&mid==mini) printf("Equilateraltriangle\n"); else printf("Isoscelestriangle\n"); } elseif(fabs(max*max-(mini*mini+mid*mid))<0.001) printf("Righttriangle\n"); else printf("Generaltriangle\n"); } else printf("Not atriangle\n"); } else printf("Not a triangle\n"); }