Определить существование треугольника по трем сторонам

С клавиатуры вводятся длины трех отрезков. Определить, можно ли из них составить треугольник.
Решение задачи на языке программирования Python

У треугольника сумма любых двух сторон должна быть больше третьей. Иначе две стороны просто "лягут" на третью и треугольника не получится.

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

Поскольку всего три стороны, то можно составить три варианта сложения двух сторон: a + b, b + c, a + c. Первую сумму сравниваем с оставшейся стороной c, вторую - с a и третью - с b. Если хотя бы в одном случае сумма окажется не больше третьей стороны, то делается вывод, что треугольник не существует.

print("Стороны:")
a = float(input("a = "))
b = float(input("b = "))
c = float(input("c = "))

if a + b > c and a + c > b and b + c > a:
    print("Треугольник существует")
else:
    print("Треугольник не существует")

Можно решить задачу сложнее. Если требуется также определить, какая из сторон больше суммы двух других, то решение может быть таким:

print("Длины сторон треугольника:")
a = float(input("a = "))
b = float(input("b = "))
c = float(input("c = "))

flag = ''
if a + b > c:
    if a + c > b:
        if b + c > a:
            print("Треугольник есть")
        else:
            flag = 'a'
    else:
        flag = 'b'
else:
    flag = 'c'

if flag != '':
    print("Треугольника нет")
    print("'%s' > суммы других" % flag)

Особого смысла использовать переменную flag здесь нет. Она просто позволяет лишний раз не писать в программе строки, информирующие о том, что треугольник не существует.

Пример выполнения программы:

Длины сторон треугольника:
a = 4
b = 5
c = 10
Треугольника нет
'c' > суммы других

Более изящным решением является использование оператора множественного ветвления языка программирования Python: if-elif-else.

print("Длины сторон треугольника:")
a = float(input("a = "))
b = float(input("b = "))
c = float(input("c = "))

flag = ''
if a + b <= c:
    flag = 'c'
elif a + c <= b:
    flag = 'b'
elif b + c <= a:
    flag = 'a'
else:
    print("Треугольник есть")


if flag != '':
    print("Треугольника нет")
    print("'%s' > суммы других" % flag)

Здесь сравнение происходит от обратного: утверждается, что сумма двух сторон меньше или равна третьей. Если это так (утверждение верно), то треугольника не существует. "Слишком длинная сторона" определяется в зависимости от того, в заголовке какой ветки логическое выражение возвращает истину.

Больше задач в PDF


Решение задач на Python




Все разделы сайта