刷题第六天:南邮NOJ【1013三角形判断】

来源:互联网 发布:手机加密软件哪个好 编辑:程序博客网 时间:2024/06/14 12:02

三角形判断

时间限制(普通/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

 

来自 <http://acm.njupt.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=1013>

#include<stdio.h>

#include<math.h>

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<i;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<b?a:b)<c?(a<b?a:b):c;

    mid=a+b+c-max-mini;

    if(max!=0&&mid!=0&&mini!=0)

    {

        if(max<mid+mini)

        {

            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");

}

0 0
原创粉丝点击