1615 - 直角三角形

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 32 MB

创建一个CTriangle 类,需要用到第二题中创建的类,即用3点来代表一个三角形,输入三个点的坐标,实现判断此三角形是不是直角三角形,并输出此三角形的周长。

题目输入

输入第一行为样例数m,接下来m行每行6个整数分别表示三个点的横纵坐标。

题目输出

对于每个样例输出两行,第一行根据是否直角三角形输出Yes或No,第二行输出三角形的周长,保留小数点后两位。

输入/输出样例

输入格式

1
0 0 3 0 0 4

输出格式

Yes
12.00

C语言解答

#include<stdio.h>
#include<math.h>
float dist(int xa,int ya,int xb,int yb){
	return(float)sqrt((xa-xb)*(xa-xb)+(ya-yb)*(ya-yb));
}
float zhou(float a,float b,float c)
{
    return(a+b+c);
}
int main()
{
	int x1,y1,x2,y2,x3,y3,n;
	float C,a,b,c;
	scanf("%d",&n);
	while(n--){
	scanf("%d%d%d%d%d%d",&x1,&y1,&x2,&y2,&x3,&y3);
	a=dist(x1,y1,x2,y2);
	b=dist(x2,y2,x3,y3);
	c=dist(x3,y3,x1,y1);
	if(a*a+b*b==c*c||a*a+c*c==b*b||b*b+c*c==a*a)
		printf("Yes\n");
    else
        printf("No\n");
	C=zhou(a,b,c);
    printf("%.2f\n",C);
	}
}

C++解答

#include <stdio.h>
#include <math.h>
#include <algorithm>
using namespace std;

class CPoint
{
    int x, y;
public:
    CPoint(int xx,int yy)
    {
        x=xx;
        y=yy;
    }
    float operator- (CPoint c);
};

float CPoint::operator- (CPoint c)
{
    return sqrt((x-c.x)*(x-c.x)+(y-c.y)*(y-c.y));
}

class CTriangle
{
    CPoint A,B,C;
    double AB,BC,AC;
public:
    CTriangle(CPoint a,CPoint b,CPoint c):A(a),B(b),C(c)
    {
        AB=A-B;
        BC=B-C;
        AC=A-C;
    }
    double length();
    bool fun();
};

bool CTriangle::fun()
{
    double a=AB,b=BC,c=AC,t;
    if(fabs(b*b+a*a-c*c)<1e-6) return true;
    if(fabs(c*c+a*a-b*b)<1e-6) return true;
    if(fabs(b*b+c*c-a*a)<1e-6) return true;
    return false;
}

double CTriangle::length()
{
    return AB+BC+AC;
}

int main()
{
    //freopen("test.in", "r", stdin);
    //freopen("test.out", "w", stdout);
    int t;
    int ax, ay, bx, by, cx, cy;
    scanf("%d", &t);
    while (t--) {
        scanf("%d %d %d %d %d %d", &ax, &ay, &bx, &by, &cx, &cy);
        CPoint a(ax,ay),b(bx,by),c(cx,cy);
        CTriangle g(a, b, c);
        if (g.fun())
            puts("Yes");
        else
            puts("No");
        printf("%.2f\n", g.length());
    }
    return 0;
}

Java解答



import java.text.DecimalFormat;
import java.util.Scanner;

public class Main{
    private static Scanner s = new Scanner (System.in) ;
    private static DecimalFormat df = new DecimalFormat("0.00") ;
    public static void main(String[] args) {
		int t = s.nextInt() ;
		
		for (int i = 0; i < t; i++) {
			int x1 = s.nextInt() ;
			int y1 = s.nextInt() ;
			int x2 = s.nextInt() ;
			int y2 = s.nextInt() ;
			int x3 = s.nextInt() ;
			int y3 = s.nextInt() ;
			int r1 = (x1-x2)*(x1-x2)+(y1-y2)*(y1-y2) ;
			int r2 = (x1-x3)*(x1-x3)+(y1-y3)*(y1-y3) ;
			int r3 = (x3-x2)*(x3-x2)+(y3-y2)*(y3-y2) ;
			if((x1-x2)*(y2-y3)==(y1-y2)*(x2-x3)){
				System.out.println("No");
			}else {
			if(((r1+r2)==(r3))||((r1+r3)==(r1))||((r3+r2)==(r1))){
				System.out.println("Yes");
				
			}else {
				System.out.println("No");
			}
			}
			System.out.println(df.format(Math.sqrt(r1)+Math.sqrt(r2)+Math.sqrt(r3)));
		}
	}
}