Bài 2: Phân loại tam giác
Yêu cầu: Viết một chương trình cho phép người dùng nhập vào độ dài 3 cạnh a, b, c. Chương trình cần kiểm tra xem 3 cạnh đó có tạo thành một tam giác hợp lệ hay không. Nếu có, hãy xác định và in ra đó là tam giác gì:
Tam giác đều (cả 3 cạnh bằng nhau)
Tam giác cân (có 2 cạnh bằng nhau)
Tam giác vuông (thỏa mãn định lý Pytago)
Tam giác vuông cân (vừa vuông, vừa cân)
Tam giác tù (có một góc lớn hơn 90 độ)
Tam giác nhọn (cả 3 góc đều nhỏ hơn 90 độ)
Tam giác thường (chỉ là tam giác, không có tính chất đặc biệt trên)
Điều kiện hợp lệ: Tổng độ dài 2 cạnh bất kỳ luôn lớn hơn cạnh còn lại.
Quảng cáo
1 câu trả lời 234
Dưới đây là một ví dụ chương trình Python thực hiện yêu cầu của bạn:
import math
# Hàm kiểm tra tam giác hợp lệ
def is_triangle(a, b, c):
return a + b > c and a + c > b and b + c > a
# Hàm phân loại tam giác
def classify_triangle(a, b, c):
sides = sorted([a, b, c]) # sắp xếp từ nhỏ đến lớn
x, y, z = sides # x ≤ y ≤ z
# Tam giác đều
if a == b == c:
return "Tam giác đều"
# Tam giác vuông
if math.isclose(x**2 + y**2, z**2):
if a == b or a == c or b == c:
return "Tam giác vuông cân"
else:
return "Tam giác vuông"
# Tam giác cân
if a == b or a == c or b == c:
return "Tam giác cân"
# Tam giác tù (có góc > 90 độ)
if x**2 + y**2 < z**2:
return "Tam giác tù"
# Tam giác nhọn (cả 3 góc < 90 độ)
if x**2 + y**2 > z**2:
return "Tam giác nhọn"
# Tam giác thường
return "Tam giác thường"
# Nhập dữ liệu từ người dùng
try:
a = float(input("Nhập cạnh a: "))
b = float(input("Nhập cạnh b: "))
c = float(input("Nhập cạnh c: "))
if is_triangle(a, b, c):
result = classify_triangle(a, b, c)
print("Tam giác hợp lệ. Loại tam giác:", result)
else:
print("Ba cạnh không tạo thành một tam giác hợp lệ.")
except ValueError:
print("Vui lòng nhập số hợp lệ!")
Giải thích logic:
Kiểm tra hợp lệ:
Tam giác hợp lệ nếu tổng 2 cạnh bất kỳ lớn hơn cạnh còn lại.
Phân loại:
Sắp xếp các cạnh để xác định cạnh lớn nhất (z) dễ so sánh với định lý Pythagoras.
Kiểm tra theo thứ tự: đều → vuông/vuông cân → cân → tù → nhọn → thường.
Lưu ý:
Sử dụng math.isclose() để so sánh số thực chính xác khi kiểm tra vuông.
Quảng cáo
Bạn cần hỏi gì?
Câu hỏi hot cùng chủ đề
-
Đã trả lời bởi chuyên gia
149257 -
Đã trả lời bởi chuyên gia
99658 -
Đã trả lời bởi chuyên gia
97291 -
Đã trả lời bởi chuyên gia
79966 -
Đã trả lời bởi chuyên gia
72815 -
Đã trả lời bởi chuyên gia
55896 -
Đã trả lời bởi chuyên gia
55272
