【牛客网】直角三角形(代码)

题目描述
创建一个CTriangle 类,需要用到第二题中创建的类,即用3点来代表一个三角形,输入三个点的坐标,实现判断此三角形是不是直角三角形,并输出此三角形的周长。
输入描述:
输入第一行为样例数m,接下来m行每行6个整数分别表示三个点的横纵坐标。
输出描述:
对于每个样例输出两行,第一行根据是否直角三角形输出Yes或No,第二行输出三角形的周长,保留小数点后两位。
示例1
输入
1
0 0 3 0 0 4
输出
Yes
12.00
思路:算出点之间的距离,用勾股定理判断。

#include 
#include 
using namespace std;
class CTriangle{
    public:
    int x1,x2,x3;
    int y1,y2,y3;
    CTriangle()
    {
        
    }
    CTriangle(int a,int b,int c,int d,int e,int f)
    {
        x1 = a;
        y1 = b;
        x2 = c;
        y2 = d;
        x3= e;
        y3 = f;
    }
    double SumDis(int a,int b,int c,int d)
    {
        return (sqrt(1.0*((a-c)*(a-c))+(1.0*(b-d)*(b-d))));
    }
    void print()
    {
        double len1 = SumDis(x1,y1,x2,y2);
        double len2 = SumDis(x2,y2,x3,y3);
        double len3 = SumDis(x3,y3,x1,y1);
        if(len1 > len3)
        {
            swap(len1,len3);
        }
        if(len2 > len3)
        {
            swap(len2,len3);
        }
        if((len1*len1)+(len2*len2) == len3*len3)
        {
            cout << "Yes" << endl;
        }
        else
        {
            cout << "No" << endl;
        }
        double ret = len1+len2+len3;
        printf("%.2lf\n",ret);
    }
};
int main()
{
    int n;
    cin >> n;
    for(int i = 0; i < n; i++)
    {
        int a,b,c,d,e,f;
        cin >> a >>b >>c >>d >>e >>f;
        CTriangle ret(a,b,c,d,e,f);
        ret.print();
    }
    return 0;
}

你可能感兴趣的:(牛客网,直角三角形)