在 Python 中检查给定区域和斜边是否可能出现直角三角形

假设我们有一个直角三角形的斜边和面积,我们必须找到这个三角形的底和高。如果不可能,则返回 False。

因此,如果输入像 hypo = 10,area = 24,那么输出将是 (6, 8)。

为了解决这个问题,我们将按照以下步骤操作 -

  • hypo_sq := hypo * hypo

  • s := (hypo_sq / 2.0) 的平方根

  • maxArea := 使用底数和斜边hypo计算三角形的面积

  • 如果 area > maxArea,则

    • 返回错误

  • 左:= 0.0,右:= s

  • 而|右-左| > 0.000001,做

    • 左 := 基础

    • 右 := 基础

    • 基数:=(左+右)/ 2.0

    • 如果使用底数 s 和斜边 hypo >= 面积的三角形面积,则

    • 否则,

    • height := (hypo_sq - base*base) 的平方根并四舍五入到最接近的整数

    • 四舍五入到最接近的基数整数

    • 返回基数和高度

    让我们看看以下实现以获得更好的理解 -

    示例代码

    from math import sqrt

     

    def calculate_area(b, h):

       hei = sqrt(h*h - b*b);

       return 0.5 * b * hei

    def solve(hypo, area):

       hypo_sq = hypo * hypo

       s = sqrt(hypo_sq / 2.0)

       maxArea = calculate_area(s, hypo)

       if area > maxArea:

          return False

         

       left = 0.0

       right = s

         

       while abs(right - left) > 0.000001:

          base = (left + right) / 2.0

          if calculate_area(base, hypo) >= area:

             right = base

          else:

             left = base

         

       height = round(sqrt(hypo_sq - base*base))

       base = round(base)

       return base, height

    hypo = 10

    area = 24

    print(solve(hypo, area))

    输入

    10, 24
    输出结果
    (6, 8)

    以上是 在 Python 中检查给定区域和斜边是否可能出现直角三角形 的全部内容, 来源链接: utcz.com/z/349190.html

    回到顶部