首页 > 其他分享 >nchu-software-oop-2022-3

nchu-software-oop-2022-3

时间:2022-10-02 16:47:20浏览次数:54  
标签:p2 p3 p1 Get nchu xy 输出 oop 2022

7-1 点线形系列1-计算两点之间的距离 分数 10 作者 蔡轲 单位 南昌航空大学

输入连个点的坐标,计算两点之间的距离

输入格式:

4个double类型的实数,两个点的x,y坐标,依次是x1、y1、x2、y2,两个点的坐标之间以空格分隔,每个点的x,y坐标以英文“,”分隔。例如:0,0 1,1或0.1,-0.3 +3.5,15.6。
若输入格式非法,输出"Wrong Format"。
若输入格式合法但坐标点的数量超过两个,输出“wrong number of points”。

输出格式:

计算所得的两点之间的距离。例如:1.4142135623730951

输入样例:

整数输入。例如:

0,0 1,1

输出样例:

在这里给出相应的输出。例如:

1.4142135623730951

输入样例1:

带符号double类型实数输入。例如:

+2,-2.3 0.9,-3.2
 

输出样例1:

在这里给出相应的输出。例如:

1.42126704035519

输入样例2:

格式非法。例如:

++2,-2.3 0.9,-3.2

输出样例2:

在这里给出相应的输出。例如:

Wrong Format

输入样例3:

点的数量超过两个。例如:

+2,-2.3 0.9,-3.2 +2,-2.3
 

输出样例3:

在这里给出相应的输出。例如:

wrong number of points
  代码长度限制 16 KB 时间限制 400 ms 内存限制 64 MB  
import java.util.Scanner;
public class Main{
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        String str = input.nextLine();
//         将字符串分成坐标数组
        String coordinate[]=str.split(" ");
//         从逗号分开坐标存储前后横纵坐标字符
        String xy[]=null;
//         判断输入格式
        for(String m:coordinate){
            xy=m.split(",");
            for(String n:xy){
                if(!n.matches("^[+-]?(0|(0\\.\\d+)?|[1-9][0-9]*(\\.\\d+)?)$")){
                    System.out.print("Wrong Format");
                    return;
                }
            }
        }
        //             判断点的数量是否为2
        if(coordinate.length!=2){
            System.out.print("wrong number of points");
            return;
        }
//         把字符转换为坐标
        xy = coordinate[0].split(",");
        double x1 = Double.valueOf(xy[0]);
        double y1 = Double.valueOf(xy[1]);
        xy = coordinate[1].split(",");
        double x2 = Double.valueOf(xy[0]);
        double y2 = Double.valueOf(xy[1]);
//         假如同一个点
        if(x1==x2&&y1==y2){
            System.out.print("Wrong Format");
            return;
        }
//         输出结果:两点距离
        System.out.print(Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)));
    }
}
7-2 点线形系列2-线的计算 分数 42 作者 蔡轲 单位 南昌航空大学

用户输入一组选项和数据,进行与直线有关的计算。选项包括:
1:输入两点坐标,计算斜率,若线条垂直于X轴,输出"Slope does not exist"。
2:输入三个点坐标,输出第一个点与另外两点连线的垂直距离。
3:输入三个点坐标,判断三个点是否在一条线上,输出true或者false。
4:输入四个点坐标,判断前两个点所构成的直线与后两点构成的直线是否平行,输出true或者false.
5:输入四个点坐标,计算输出前两个点所构成的直线与后两点构成的直线的交点坐标,x、y坐标之间以英文分隔",",并输出交叉点是否在两条线段之内(不含四个端点)的判断结果(true/false),判断结果与坐标之间以一个英文空格分隔。若两条线平行,没有交叉点,则输出"is parallel lines,have no intersection point"。

输入格式:

基本格式:选项+":"+坐标x+","+坐标y+" "+坐标x+","+坐标y。
例如:1:0,0 1,1
如果不符合基本格式,输出"Wrong Format"。
如果符合基本格式,但输入点的数量不符合要求,输出"wrong number of points"。
不论哪个选项,如果格式、点数量都符合要求,但构成任一条线的两个点坐标重合,输出"points coincide",

输出格式:

见题目描述。

输入样例1:

选项1,两点重合。例如:

1:-2,+5 -2,+5
 

输出样例:

在这里给出相应的输出。例如:

points coincide
 

输入样例2:

选项1,斜率无穷大的线。例如:

1:-2,3 -2,+5
 

输出样例:

在这里给出相应的输出。例如:

Slope does not exist
 

输入样例3:

选项1,斜率无穷大。例如:

1:-2,3 -2,+5
 

输出样例:

在这里给出相应的输出。例如:

Slope does not exist
 

输入样例4:

选项1,符合格式输入,带符号/不带符号数混合。例如:

1:-2.5,3 -2,+5.3
 

输出样例:

在这里给出相应的输出。例如:

4.6
 

输入样例5:

选项2,计算第一个点到另外两点连线的垂直距离。例如:

2:0,1 1,0 2,0
 

输出样例:

在这里给出相应的输出。例如:

1.0
 

输入样例6:

选项3,判断三个点是否在一条线上。例如:

3:0,1 2,2 5,3
 

输出样例:

在这里给出相应的输出。例如:

false
 

输入样例7:

选项4,判断两条线是否平行。例如:

4:0,1 0,2 2,1 3,0 
 

输出样例:

在这里给出相应的输出。例如:

false
 

输入样例8:

选项5,判断两条线的交点。例如:

5:0,0 -1,-1 0,2 3,-1
 

输出样例:

在这里给出相应的输出,交点坐标之间以英文","分隔,判断结果与坐标之间以一个英文空格分隔。例如:

1.0,1.0 true
 

输入样例9:

选项5,判断两条线的交点。但两条线平行例如:

5:0,0 -1,-1 2,3 3,4
 

输出样例:

在这里给出相应的输出,交点坐标之间以英文","分隔,判断结果与坐标之间以一个英文空格分隔。例如:

is parallel lines,have no intersection point
  代码长度限制 16 KB 时间限制 400 ms 内存限制 64 MB
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String str = in.nextLine();
        String[] c = str.split(":");
//        mark=1、2、3、4、5
        int mark = str.charAt(0) - 48;
        String[] b = c[1].split(" ");
        String[] a;
        for (String i : b) {
            a = i.split(",");
            if (a.length != 2) {
                System.out.print("Wrong Format");
                return;
            }
            for (String j : a) {
                //正则表达式依次判断坐标格式[+-]?[1-9]\d*.\d*|0\.\d*[1-9]\d*
                if (!j.matches("^[+-]?(0|(0\\.\\d+)?|[1-9][0-9]*(\\.\\d+)?)$")) {
                    System.out.print("Wrong Format");
                    return;
                }
            }
        }
        Slope K = new Slope();
        double m, n;
//        暂时存放一个坐标
        String[] xy;
        if (mark == 1) {
//        点的数量和标号对不上
            if (b.length != 2) {
                System.out.print("wrong number of points");
                return;
            }
            xy = b[0].split(",");
            Coordinate p1 = new Coordinate();
            p1.x = p1.Get_x(Double.parseDouble(xy[0]));
            p1.y = p1.Get_y(Double.parseDouble(xy[1]));
            xy = b[1].split(",");
            Coordinate p2 = new Coordinate();
            p2.x = p2.Get_x(Double.parseDouble(xy[0]));
            p2.y = p2.Get_y(Double.parseDouble(xy[1]));
            if (p1.x == p2.x && p1.y == p2.y) {
                System.out.print("points coincide");
            } else if (p1.x == p2.x) {
                System.out.print("Slope does not exist");
            } else {
                K.k = K.Get_k(p1, p2);
                System.out.print(K.k);
            }
        } else if (mark == 2) {
//        点的数量和标号对不上
            if (b.length != 3) {
                System.out.print("wrong number of points");
                return;
            }
            xy = b[0].split(",");
            Coordinate p1 = new Coordinate();
            p1.x = p1.Get_x(Double.parseDouble(xy[0]));
            p1.y = p1.Get_y(Double.parseDouble(xy[1]));
            xy = b[1].split(",");
            Coordinate p2 = new Coordinate();
            p2.x = p2.Get_x(Double.parseDouble(xy[0]));
            p2.y = p2.Get_y(Double.parseDouble(xy[1]));
            xy = b[2].split(",");
            Coordinate p3 = new Coordinate();
            p3.x = p3.Get_x(Double.parseDouble(xy[0]));
            p3.y = p3.Get_y(Double.parseDouble(xy[1]));
            if ((p3.x == p2.x && p3.y == p2.y)) {
                System.out.print("points coincide");
            } else if (p3.x == p2.x) {
                System.out.print(Math.abs(p1.x - p2.x));
            } else {
                K.k = K.Get_k(p3, p2);
                m = p3.y - K.k * p3.x;
                System.out.print(Math.abs(K.k * p1.x - p1.y + m) / Math.pow(1 + K.k * K.k, 0.5));
            }
        } else if (mark == 3) {
            if (b.length != 3) {
                System.out.print("wrong number of points");
                return;
            }
            xy = b[0].split(",");
            Coordinate p1 = new Coordinate();
            p1.x = p1.Get_x(Double.parseDouble(xy[0]));
            p1.y = p1.Get_y(Double.parseDouble(xy[1]));
            xy = b[1].split(",");
            Coordinate p2 = new Coordinate();
            p2.x = p2.Get_x(Double.parseDouble(xy[0]));
            p2.y = p2.Get_y(Double.parseDouble(xy[1]));
            xy = b[2].split(",");
            Coordinate p3 = new Coordinate();
            p3.x = p3.Get_x(Double.parseDouble(xy[0]));
            p3.y = p3.Get_y(Double.parseDouble(xy[1]));
            if (p2.x == p3.x && p2.y == p3.y) {
                System.out.print("points coincide");
                return;
            }
            if (p1.x == p2.x && p2.x == p3.x) {
                System.out.print(true);
            } else {
                K.k = K.Get_k(p3, p2);
                m = p3.y - K.k * p3.x;
                System.out.print(p1.y == K.k * p1.x + m);
            }
        } else if (mark == 4) {
            if (b.length != 4) {
                System.out.print("wrong number of points");
                return;
            }
            xy = b[0].split(",");
            Coordinate p1 = new Coordinate();
            p1.x = p1.Get_x(Double.parseDouble(xy[0]));
            p1.y = p1.Get_y(Double.parseDouble(xy[1]));
            xy = b[1].split(",");
            Coordinate p2 = new Coordinate();
            p2.x = p2.Get_x(Double.parseDouble(xy[0]));
            p2.y = p2.Get_y(Double.parseDouble(xy[1]));
            xy = b[2].split(",");
            Coordinate p3 = new Coordinate();
            p3.x = p3.Get_x(Double.parseDouble(xy[0]));
            p3.y = p3.Get_y(Double.parseDouble(xy[1]));
            xy = b[3].split(",");
            Coordinate p4 = new Coordinate();
            p4.x = p4.Get_x(Double.parseDouble(xy[0]));
            p4.y = p4.Get_y(Double.parseDouble(xy[1]));
            if ((p1.x == p2.x && p1.y == p2.y) || (p3.x == p4.x && p3.y == p4.y)) {
                System.out.print("points coincide");
                return;
            }
            if (p1.x == p2.x && p3.x == p4.x) {
                System.out.print(true);
                return;
            }
            K.k = K.Get_k(p1, p2);
            System.out.print(K.k == K.Get_k(p3, p4));
        } else if (mark == 5) {
            if (b.length != 4) {
                System.out.print("wrong number of points");
                return;
            }
            xy = b[0].split(",");
            Coordinate p1 = new Coordinate();
            p1.x = p1.Get_x(Double.parseDouble(xy[0]));
            p1.y = p1.Get_y(Double.parseDouble(xy[1]));
            xy = b[1].split(",");
            Coordinate p2 = new Coordinate();
            p2.x = p2.Get_x(Double.parseDouble(xy[0]));
            p2.y = p2.Get_y(Double.parseDouble(xy[1]));
            xy = b[2].split(",");
            Coordinate p3 = new Coordinate();
            p3.x = p3.Get_x(Double.parseDouble(xy[0]));
            p3.y = p3.Get_y(Double.parseDouble(xy[1]));
            xy = b[3].split(",");
            Coordinate p4 = new Coordinate();
            p4.x = p4.Get_x(Double.parseDouble(xy[0]));
            p4.y = p4.Get_y(Double.parseDouble(xy[1]));
            if ((p1.x == p2.x && p1.y == p2.y) || (p3.x == p4.x && p3.y == p4.y)) {
                System.out.print("points coincide");
                return;
            }
            if ((p1.x == p2.x && p3.x == p4.x) || (p1.y == p2.y && p3.y == p4.y) ||
                    (p1.x == p2.x && p3.x == p4.x && p1.x == p3.x) || (p1.y == p2.y && p3.y == p4.y && p1.y == p3.y)) {
                System.out.print("is parallel lines,have no intersection point");
                return;
            }

//            交点
            double x1, y1, A1, B1, c1, A2, B2, c2;
            /*A = p3.y - y1
            B = x1 - p3.x
            C = p3.xy1-x1p3.y*/
            A1 = p2.y - p1.y;
            B1 = p1.x - p2.x;
            c1 = p2.x * p1.y - p1.x * p2.y;
            A2 = p4.y - p3.y;
            B2 = p3.x - p4.x;
            c2 = p4.x * p3.y - p3.x * p4.y;
            if((A1 * B2 - A2 * B1)==0){
System.out.print("is parallel lines,have no intersection point");
return;
            }else {
                y1 = (c1 * A2 - c2 * A1) / (A1 * B2 - A2 * B1);
                x1 = (c2 * B1 - c1 * B2) / (A1 * B2 - A2 * B1);
            }
            
//            y1 = ((p1.y - p2.y) * (p4.y - p3.y) * p1.x + (p4.y - p3.y) * (p2.x - p1.x) * p1.y + (p2.y - p1.y) * (p4.y - p3.y) * p3.x + (p3.x - p4.x) * (p2.y - p1.y) * p3.y) / ((p2.x - p1.x) * (p4.y - p3.y) + (p1.y - p2.y) * (p4.x - p3.x));
//            x1 = p3.x + (p4.x - p3.x) * (y1 - p3.y) / (p4.y - p3.y);
//            if(A1==0&&)
            if((p1.x==p2.x&&p1.x==0)&&(p3.y== p4.y&&p3.y==0)){
                x1=0;
                y1=0;
            }
            /*Slope K1 = new Slope();
            if (p1.x == p2.x && p3.y == p4.y) {
                x1 = p1.x;
                y1 = p3.y;
            } else if (p1.y == p2.y && p3.x == p4.x) {
                y1 = p1.y;
                x1 = p3.x;
            } else if (p1.x == p2.x) {
                K1.k = K1.Get_k(p3, p4);
                n = p3.y - K1.k * p3.x;
                x1 = p1.x;
                y1 = K1.k * x1 + n;
            } else if (p3.x == p4.x) {
                K1.k = K1.Get_k(p3, p4);
                m = p1.y - K.k * p1.x;
                x1 = p3.x;
                y1 = K.k * x1 + m;
            } else {
                K.k = K.Get_k(p1, p2);
                K1.k = K1.Get_k(p3, p4);
                m = p1.y - K.k * p1.x;
                n = p3.y - K1.k * p3.x;
                x1 = (n - m) / (K.k - K1.k);
                y1 = K.k * x1 + m;
                if (K.k == K1.k) {
                    System.out.print("is parallel lines,have no intersection point");
                    return;
                }
            }*/
            if ((x1 < Math.max(p1.x, p2.x) && x1 > Math.min(p1.x, p2.x)) ||
                    (x1 < Math.max(p3.x, p4.x) && x1 > Math.min(p3.x, p4.x))) {
                System.out.print(x1 + "," + y1 + " true");
            } else {
                System.out.print(x1 + "," + y1 + " false");
            }
        } else {
            System.out.print("Wrong Format");
        }
    }
}

//坐标点
class Coordinate {
    double x;
    double y;

    double Get_x(double x) {
        return x;
    }

    double Get_y(double y) {
        return y;
    }
}

//斜率
class Slope {
    double k;

    double Get_k(Coordinate p1, Coordinate p2) {
        return (p2.y - p1.y) / (p2.x - p1.x);
    }
}
7-3 点线形系列3-三角形的计算 分数 48 作者 蔡轲 单位 南昌航空大学

用户输入一组选项和数据,进行与三角形有关的计算。选项包括:
1:输入三个点坐标,判断是否是等腰三角形、等边三角形,判断结果输出true/false,两个结果之间以一个英文空格符分隔。
2:输入三个点坐标,输出周长、面积、重心坐标,三个参数之间以一个英文空格分隔,坐标之间以英文","分隔。
3:输入三个点坐标,输出是钝角、直角还是锐角三角形,依次输出三个判断结果(true/false),以一个英文空格分隔,
4:输入五个点坐标,输出前两个点所在的直线与三个点所构成的三角形相交的交点数量,如果交点有两个,则按面积大小依次输出三角形被直线分割成两部分的面积。若直线与三角形一条线重合,输出"The point is on the edge of the triangle"
5:输入四个点坐标,输出第一个是否在后三个点所构成的三角形的内部(输出in the triangle/outof triangle)。
必须使用射线法,原理:由第一个点往任一方向做一射线,射线与三角形的边的交点(不含点本身)数量如果为1,则在三角形内部。如果交点有两个或0个,则在三角形之外。若点在三角形的某条边上,输出"on the triangle"

输入格式:

基本格式:选项+":"+坐标x+","+坐标y+" "+坐标x+","+坐标y。点的x、y坐标之间以英文","分隔,点与点之间以一个英文空格分隔。

输出格式:

基本输出格式见每种选项的描述。
异常情况输出:
如果不符合基本格式,输出"Wrong Format"。
如果符合基本格式,但输入点的数量不符合要求,输出"wrong number of points"。
如果输入的三个点无法构成三角形,输出"data error"。
注意:输出的数据若小数点后超过6位,只保留小数点后6位,多余部分采用四舍五入规则进到最低位。小数点后若不足6位,按原始位数显示,不必补齐。例如:1/3的结果按格式输出为 0.333333,1.0按格式输出为1.0

选项4中所输入线的两个点坐标重合,输出"points coincide",

输入样例1:

选项4,定义线的两点重合。例如:

4:1,0 1,0 0,0 2,0 4,0
 

输出样例:

在这里给出相应的输出。例如:

points coincide
 

输入样例2:

选项4,构成三角形的三个点在一条线上,无法构成三角形。例如:

4:1,0 0,2 0,0 0,0 4,0
 

输出样例:

在这里给出相应的输出。例如:

data error
 

输入样例3:

选项1,判断等腰、等边三角形。例如:

1:-2,0 2,0 0,4
 

输出样例:

两个判断结果。例如:

true false
 

输入样例4:

选项2,输出边长、面积、重心坐标。例如:

2:0,0 3,0 0,1
 

输出样例:

在这里给出相应的输出。例如:

7.162278 1.5 1.0,0.333333
 

输入样例5:

选项3,钝角、直角、锐角的判断。例如:

3:0,1 1,0 2,0
 

输出样例:

在这里给出相应的输出。例如:

true false false
 

输入样例6:

选项4,直线与三角形交点的数量等于2,输出数量值以及三角形被分割的两部分面积。例如:

4:1,0 0,2 0,0 0,2 4,0
 

输出样例:

在这里给出相应的输出。例如:

2 1.0 3.0
 

输入样例7:

选项4,直线与三角形交点的数量少于两个,只输出数量值。例如:

4:-1,0 1,2 0,1 0,-1 2,0
 

输出样例:

在这里给出相应的输出。例如:

1
 

输入样例8:

选项5,用射线法判断点是否在三角形内部。例如:

5:0.5,0.5 0,0 0,2 4,0
 

输出样例:

在这里给出相应的输出,交点坐标之间以英文","分隔,判断结果与坐标之间以一个英文空格分隔。例如:

in the triangle
 

输入样例9:

选项5,用射线法判断点是否在三角形内部。例如:

5:0,0 -1,-1 2,3 3,4
 

输出样例:

在这里给出相应的输出。例如:

outof the triangle
  代码长度限制 100 KB 时间限制 400 ms 内存限制 64 MB
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String str = in.nextLine();
        String[] c = str.split(":");
//        mark=1、2、3、4、5
        int mark = str.charAt(0) - 48;
        String[] b = c[1].split(" ");
        String[] a;
        for (String i : b) {
            a = i.split(",");
            if (a.length != 2) {
                System.out.print("Wrong Format");
                return;
            }
            for (String j : a) {
                //正则表达式依次判断坐标格式[+-]?[1-9]\d*.\d*|0\.\d*[1-9]\d*
                if (!j.matches("^[+-]?(0|(0\\.\\d+)?|[1-9][0-9]*(\\.\\d+)?)$")) {
                    System.out.print("Wrong Format");
                    return;
                }
            }
        }
        Triangle S = new Triangle();
        String[] xy;
        String result;
        if (mark == 1 || mark == 2 || mark == 3) {
            if (b.length != 3) {
                System.out.print("wrong number of points");
                return;
            }
            xy = b[0].split(",");
            S.A.x = S.A.Get_x(xy);
            S.A.y = S.A.Get_y(xy);
            xy = b[1].split(",");
            S.B.x = S.B.Get_x(xy);
            S.B.y = S.B.Get_y(xy);
            xy = b[2].split(",");
            S.C.x = S.C.Get_x(xy);
            S.C.y = S.C.Get_y(xy);
            Line L = new Line();
            S.a = L.Changdu(S.B, S.C);
            S.b = L.Changdu(S.A, S.C);
            S.c = L.Changdu(S.B, S.A);
            if (!S.sanjiaoxing(S.a, S.b, S.c)) {
                System.out.print("data error");
                return;
            }
            if (mark == 1) {
                System.out.print(S.dengyao(S) + " " + S.dengbian(S));
                return;
            } else if (mark == 2) {
                result = String.format("%.6f", S.Zhouchang(S));
                S.zhouchang = Double.parseDouble(result);
                result = String.format("%.6f", S.Mianji(S));
                S.mianji = Double.parseDouble(result);
                S.G = S.qiuzhongxin(S);
                result = String.format("%.6f", S.G.x);
                S.G.x = Double.parseDouble(result);
                result = String.format("%.6f", S.G.y);
                S.G.y = Double.parseDouble(result);
                System.out.print(S.zhouchang + " " + S.mianji + " " + S.G.x + "," + S.G.y);
            } else {
                System.out.print(S.dunjiao(S) + " " + S.zhijiao(S) + " " + S.ruijiao(S));
            }
        } else if (mark == 4) {
            if (b.length != 5) {
                System.out.print("wrong number of points");
                return;
            }

            xy = b[0].split(",");
            Point P = new Point();
            P.x = P.Get_x(xy);
            P.y = P.Get_y(xy);
            xy = b[1].split(",");
            Point Q = new Point();
            Q.x = Q.Get_x(xy);
            Q.y = Q.Get_y(xy);
            if (P.x == Q.x && P.y == Q.y) {
                System.out.print("points coincide");
                return;
            }
            xy = b[2].split(",");
            S.A.x = S.A.Get_x(xy);
            S.A.y = S.A.Get_y(xy);
            xy = b[3].split(",");
            S.B.x = S.B.Get_x(xy);
            S.B.y = S.B.Get_y(xy);
            xy = b[4].split(",");
            S.C.x = S.C.Get_x(xy);
            S.C.y = S.C.Get_y(xy);
            Line L = new Line();
            S.a = L.Changdu(S.B, S.C);
            S.b = L.Changdu(S.A, S.C);
            S.c = L.Changdu(S.B, S.A);
            if (!S.sanjiaoxing(S.a, S.b, S.c)) {
                System.out.print("data error");
                return;
            }

        } else if (mark == 5) {
            if (b.length != 5) {
                System.out.print("wrong number of points");
                return;
            }
        } else {
            System.out.print("Wrong Format");
        }

    }
}

//三角形
class Triangle {
    Point A = new Point();
    Point B = new Point();
    Point C = new Point();
    Point G = new Point();
    double a, b, c;
    double mianji, zhouchang;

    //    判断是不是三角形
    boolean sanjiaoxing(double A, double B, double C) {
        if ((A + B <= C) || (C + B <= A) || (A + C <= B)) {
            return false;
        } else {
            return true;
        }
    }

    //求面积
    double Mianji(Triangle S) {
        return 0.5 * ((S.A.x * S.B.y - S.B.x * S.A.y) + (S.B.x * S.C.y - S.C.x * S.B.y) + (S.C.x * S.A.y - S.A.x * S.C.y));
    }

    //    求周长
    double Zhouchang(Triangle S) {
        return S.a + S.b + S.c;
    }

    //    求重心
    Point qiuzhongxin(Triangle S) {
        Point G = new Point();
        G.x = (S.A.x + S.B.x + S.C.x) / 3;
        G.y = (S.A.y + S.B.y + S.C.y) / 3;
        return G;
    }

    //等腰判断
    boolean dengyao(Triangle S) {
        if ((S.a == S.b && S.a != S.c) || (S.a == S.c && S.a != S.b) || (S.c == S.b && S.c != S.a)) {
            return true;
        } else {
            return true;
        }
    }

    //等边判断
    boolean dengbian(Triangle S) {
        if (S.a == S.b && S.a == S.c) {
            return true;
        } else {
            return false;
        }
    }

    //直角判断
    boolean zhijiao(Triangle S) {
        if ((S.a * S.a + S.b * S.b == S.c * S.c)
                || (S.c * S.c + S.b * S.b == S.a * S.a)
                || (S.a * S.a + S.c * S.c == S.b * S.b)) {
            return true;
        } else {
            return false;
        }
    }

    //    锐角三角形判断
    boolean ruijiao(Triangle S) {
        if ((S.a * S.a + S.b * S.b > S.c * S.c)
                && (S.c * S.c + S.b * S.b > S.a * S.a)
                && (S.a * S.a + S.c * S.c > S.b * S.b)) {
            return true;
        } else {
            return false;
        }
    }

    //    钝角三角形判断
    boolean dunjiao(Triangle S) {
        if ((S.a * S.a + S.b * S.b < S.c * S.c)
                || (S.c * S.c + S.b * S.b < S.a * S.a)
                || (S.a * S.a + S.c * S.c < S.b * S.b)) {
            return true;
        } else {
            return false;
        }
    }
}

//线段类
class Line {
    Point A = new Point();
    Point B = new Point();

    double Changdu(Point p1, Point p2) {
        return Math.pow((Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2)), 0.5);
    }
}

//坐标点
class Point {
    double x;
    double y;

    //传入一个"x,y"的数组
    double Get_x(String[] p) {
        return Double.parseDouble(p[0]);
    }

    //传入一个"x,y"的数组
    double Get_y(String[] p) {
        return Double.parseDouble(p[1]);
    }
}

踩坑心得:前两次的题目难度不高,但是这一次的大作业从类的设计来看比较前面的题目更加明显,这不是我第一次写的代码,第一次写的完全是用C语言的思路来写,到后面多看看书上的内容,类的相关设计调用等等,

就有所启发重写了一次,每人第一次遇到的问题都很难相同但是多去网上查找答案,查找思路,自己才能从中学习,否则自己关在房间里想到猴年马月也想不出,想出了效率也低。

   

 

 

标签:p2,p3,p1,Get,nchu,xy,输出,oop,2022
From: https://www.cnblogs.com/fanyiguan/p/16748982.html

相关文章