gpt4 book ai didi

java - 给定三个点的三角形类型(锐角、钝角、直角)

转载 作者:行者123 更新时间:2023-12-01 12:31:42 26 4
gpt4 key购买 nike

目标:给定三个 (x,y) 坐标,判断三角形是锐角三角形、钝角三角形、直角三角形还是不能组成三角形。当我为锐角三角做好准备时,我的问题就开始了。按照我输入的方式,该程序不会比锐角三角形更进一步。总之,“它要么是直角三角形,要么是锐角三角形。”请帮我解决它。感谢您的帮助。这是到目前为止我的代码:

        //Calculate change in x for distance formula
delta_x1 = (x2-x1)*(x2-x1);
delta_x2 = (x3-x2)*(x3-x2);
delta_x3 = (x3-x1)*(x3-x1);

//Calculate change in y for distance formula
delta_y1 = (y2-y1)*(y2-y1);
delta_y2 = (y3-y2)*(y3-y2);
delta_y3 = (y3-y1)*(y3-y1);
//Calculate distance foe each of the three sides if not CO-LINEAR
side1 = Math.sqrt(delta_x1 + delta_y1);
side1 = Math.round(side1*side1);
side2 = Math.sqrt(delta_x2 + delta_y2);
side2 = Math.round(side2*side2);
side3 = Math.sqrt(delta_x3 + delta_y3);
side3 = Math.round(side3*side3);

if ((side1 + side2 == side3) ||
(side1 + side3 == side2) ||
(side2 + side3 == side1)) {
System.out.println ("Right Triangle!");
}
else if ((side1 + side2 > side3) ||
(side1 + side3 > side2) ||
(side2 + side3 > side1)) {
System.out.println("Acute Triangle!");
}
else if ((side1 + side2 < side3) ||
(side1 + side3 < side2) ||
(side2 + side3 < side1)) {
System.out.println("Obtuse Triangle!");
}
else {
System.out.println("Can't form a triangle.");
}

最佳答案

您犯了三个严重错误和两项轻罪。

(1) 不要将边长的正方形称为 side1, side2, side3 。这很令人困惑,但它不会让你的程序给出不正确的结果。

(2) 求平方根,然后对结果求平方。这是毫无意义的,但同样,这并不是一个真正的错误。

(3) 不要将边长的正方形舍入,因为它们可能不是整数。如果边长不是整数,这将引入错误。

(4) 替换||&&在尖锐的情况下。所有这三个不等式都必须成立,三角形才能成为锐角三角形。这是导致一切出错的错误。

(5) 为了使钝度条件正确,您需要原始边长,而不是边的平方;你想要 <=代替< 。但由于这三个长度来自实际点之间的距离,因此现阶段剩下要检查的就是这些点是否共线。为此,如果使用 (x2-x1)*(y3-y2)==(y2-y1)*(x3-x2) 等等式,则不太容易出现舍入错误。当且仅当这些点共线时,这才是正确的。

关于java - 给定三个点的三角形类型(锐角、钝角、直角),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25877875/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com