площадь треугольника - питон 27

Программа настроена на вычисление площади треугольника. Стороны треугольника (a,b,c) являются входными данными. Код отлично работает только с определенными номерами, а не с другими. Например.

когда a,b и c соответственно: 2,3,4 код в порядке. 2,3,5 вывод в 0.00, что неверно. 2,3,6 программа выводит ошибку математической области

def main():
    print "Program calculates the area of a triangle."
    print
    a, b, c = input("Enter triangle's sides length: ")
    s = (a+b+c) / 2.0
    area = sqrt(s*(s-a)*(s-b)*(s-c))
    print "The area is %.2f" % area

main()

ты видишь, что не так?


person nutship    schedule 30.01.2013    source источник
comment
Спасибо за это. формула была в книге, которую я читаю. почему, пожалуйста, для 2,3,5 вывод равен 0,00?   -  person nutship    schedule 30.01.2013
comment
Вы получаете ноль, когда переменная s, называемая полупериметром, имеет ту же длину, что и одна из сторон треугольника. Например, (2 + 3 + 5)/2 = 5, и тогда член (s-c) будет равен нулю.   -  person radical7    schedule 30.01.2013


Ответы (2)


Ваш код кажется законным, давайте посмотрим на ваши тестовые примеры по математике:

Случай 1:

a=2; b=3; c=5;

s=(2+3+5)/2.0
 = 5.00

И у вас есть площадь = sqrt(s*(s-a)(s-b)(s-c))

Смотрите, в формуле есть (s-c), которые оказываются (5,00 - 5) = 0. В этом случае площадь = 0,00, что правильно.

Случай 2:

a=2; b=3; c=6;

s=(2+3+6)/2.0
 = 5.50

с точки зрения (s-c), у вас есть (5,50 - 6) = -0,5

sqrt отрицательного числа дает вам «ошибку математической области»

Приведенные выше результаты означают, что эти числа не могут образовывать правильные треугольники. В вашем коде или формуле нет ничего плохого. Тем не менее, убедитесь, что ваши тестовые примеры являются законными, прежде чем тестировать свой код в следующий раз.

Надеюсь поможет =]

person Lok    schedule 30.01.2013

Формула работает; это ваши ожидания, которые немного не так.

2,3,5 вывод в 0.00, что неверно.

Действительно? Не могли бы вы тогда нарисовать треугольник со сторонами, равными 2, 3 и 5? :^) Единственная возможность — это вырожденный треугольник — линия (2-дюймовый отрезок, соединенный с 3-дюймовым отрезком), которая, очевидно, имеет нулевую площадь.

Не каждая комбинация из трех чисел работает как треугольник. Вам нужно иметь a+b>c, b+c>a и c+a>b. Для (2,3,6) у вас есть

3+6 > 2 и 6+2 > 3, но 2+3 < 6, так что такого треугольника нет.

person DSM    schedule 30.01.2013