Определить возможность существования треугольника по сторонам | Язык Паскаль

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

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

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

Длины сторон: 5 7 3
Треугольник существует.
Длины сторон: 10 5 3
Треугольник не существует.

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

Ниже приведены решения задачи на языке программирования Паскаль двумя способами. В первом случае все стороны проверяются в одном операторе if; во втором случае каждая сторона проверяется отдельно, а программа содержит вложенные операторы if-else.

Программа 1:

var 
    a, b, c: integer;
 
begin
    write('Длины сторон: ');
    readln(a, b, c);
 
    if (a < b+c) and (b < a+c) and (c < a+b) then
        writeln('Треугольник существует.')
    else
        writeln('Треугольник не существует.');

end.

В языке Паскаль логический оператор and имеет приоритет над операторам >, <. Поэтому для изменения последовательности выполнения действий в заголовке условного оператора используются скобки.

В условии if проверяется, что каждая из сторон меньше суммы других. Если хотя бы одна будет больше, то все логическое выражение вернет ложь (false). В таком случае сработает ветка else.

Программа 2:

В программе ниже существование треугольника проверяется поэтапно.

  1. Если первое условие возвращает ложь, то поток выполнения программы переходит к ветке else, которая соответствует внешнему if (находится в самом конце).
  2. Если первое условие соблюдено, то поток выполнения программы оказывается у вложенного if. Здесь проверяется уже второе условие.
  3. Если оно возвращает ложь, то программа переходит к предпоследнему else.
  4. Если и второе логическое выражение возвращает истину (true), то программа идет к третьему условию. При его соблюдении выполняется тело самого вложенного оператора if. При его несоблюдении сработает самое вложенное else.

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

var 
    a, b, c: integer;
 
begin
    write('A: '); readln(a);
    write('B: '); readln(b);
    write('C: '); readln(c);
 
    if a < b + c then
        if b < a + c then
            if c < a + b then
                writeln ('Треугольник существует.')
            else
                writeln ('Треугольника нет. Сторона C слишком большая.')
        else
            writeln ('Треугольника нет. Сторона B слишком большая.')
    else
        writeln ('Треугольника нет. Сторона A слишком большая.');
 
end.

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

A: 4
B: 5
C: 6
Треугольник существует.
A: 10
B: 5
C: 4
Треугольника нет. Сторона A слишком большая.
A: 3
B: 3
C: 7
Треугольника нет. Сторона C слишком большая.
A: 6
B: 12
C: 4
Треугольника нет. Сторона B слишком большая.

Примечание. В обоих вариантах решения задачи мы не учитываем случай вырожденного треугольника, когда сторона может быть равна сумме двух других. Чтобы учитывать такие треугольники оператор сравнения "меньше" надо поменять на "меньше или равно" (<=).