Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ตรวจสอบว่าสามเหลี่ยมมุมฉากเป็นไปได้จากพื้นที่ที่กำหนดและด้านตรงข้ามมุมฉากใน Python


สมมติว่าเรามีด้านตรงข้ามมุมฉากและพื้นที่ของสามเหลี่ยมมุมฉาก, เราต้องหาฐานและความสูงของสามเหลี่ยมนี้ ถ้าเป็นไปไม่ได้ให้คืนค่าเป็นเท็จ

ดังนั้น หากอินพุตเป็นเหมือน hypo =10, พื้นที่ =24 เอาต์พุตจะเป็น (6, 8)

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • hypo_sq :=hypo * hypo
  • s :=รากที่สองของ (hypo_sq / 2.0)
  • maxArea :=คำนวณพื้นที่ของสามเหลี่ยมโดยใช้ฐาน s และ hypotenuse hypo
  • ถ้าพื้นที่> maxArea แล้ว
    • คืนค่าเท็จ
  • ซ้าย :=0.0 ขวา :=s
  • ในขณะที่ |ขวา - ซ้าย|> 0.000001 ทำ
    • ฐาน :=(ซ้าย + ขวา) / 2.0
    • ถ้าพื้นที่ของสามเหลี่ยมโดยใช้ฐาน s และด้านตรงข้ามมุมฉาก hypo>=พื้นที่แล้ว
      • ขวา :=ฐาน
    • มิฉะนั้น
      • ซ้าย :=ฐาน
  • ความสูง :=รากที่สองของ (hypo_sq - ฐาน*ฐาน) และปัดเศษของจำนวนเต็มที่ใกล้เคียงที่สุด
  • ปัดเศษของจำนวนเต็มฐานที่ใกล้ที่สุด
  • คืนฐานและความสูง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

โค้ดตัวอย่าง

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)