判断三角形类型

C:判断三角形类型

总Time Limit: 
1000ms 
Memory Limit: 
65536kB
Description

给定三角形的三条边:a, b, c。判断该三角形类型。

Input
第一行是测试数据个数n(n < 1000),
随后n行每一行有3个正整数(数值不超过20000),分别为三角形的三条边的边长。
Output
对于每组输入,判断三角形类型。输出“dyzj”表示等腰直角三角形、“ptzj”表示普通直角三角形;“db”等边三角形、“dyrj”等腰锐角三角形、“ptrj”普通锐角三角形;“dydj”等腰钝角三角形、“ptdj”普通钝角三角形;“bssjx”不能组成三角形。
Sample Input
2
3 4 5
30 30 30
Sample Output
ptzj
db
Hint
两条较短边的平方和大于最长边的平方,此三角形就是锐角三角形;
两条较短边的平方和小于最长边的平方,此三角形就是钝角三角形;
两条边短边的平方和等于最长边的平方,此三角形就是直角三角形.
Source
医学部助教-刘璐-高良才助教

解题方法: 首先判断能不能组成 三角形 , 然后依次判断 直角三角形 钝角三角形 和锐角三角形
   再在直角三角形中判断  等腰直角三角形
   在锐角三角形中判断   等腰三角形  然后在等腰三角形中判断等边三角形
   在钝角三角形中判断 等腰三角形

源代码:
#include<iostream>
using namespace std;

void buble(int a[], int n)
{
    int i , j , tmp;
    for(i = 0 ; i < n; i++)
    {
        for(j = 0; j < n -1- i; j++)
        {
            if(a[j] >a[j+1])
            {
               tmp = a[j];
               a[j] = a[j+1];
               a[j+1] = tmp;
            }
        }
    }
}
bool tringle(int a, int b , int c)
{
    if(a+b <= c || a+c <= b || b+c <= a)
    {
        return false;
    }
    return true;
}
int main()
{
    int num[4];
    int n , i;
    cin>>n;
    while(n--)
    {
       int a, b, c;
       for(i = 0 ; i< 3; i++)
       {
           cin>>num[i];
       }
       buble(num, 3);
       a = num[0]; b = num[1]; c = num[2];
       if(tringle(a, b, c))
       {

           if(a*a + b*b  == c*c)
           {
                if(a == b )
                {
                    cout<<"dyzj"<<endl;
                }
                else
                {
                    cout<<"ptzj"<<endl;
                }
           }
           if(a*a + b*b < c*c)
           {
                if(a == b || a == c || b == c)
                {
                    cout<<"dydj"<<endl;
                }
                else
                {
                    cout<<"ptdj"<<endl;
                }
           }
           if(a*a + b*b > c*c)
           {
               if(a == b || a == c || b == c)
               {
                   if(a == b && b == c)
                   {
                       cout<<"db"<<endl;
                   }
                   else
                   {
                       cout<<"dyrj"<<endl;
                   }
               }
               else
               {
                   cout<<"ptrj"<<endl;
               }
           }
       }
       else
       {
           cout<<"bssjx"<<endl;
       }
    }
    return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wangxiaoming

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值