Заданы длины сторон треугольника определить является ли этот треугольник прямоугольным

Задача «Треугольник»

Заданы длины трех отрезков a, b, c. Необходимо определить, можно ли из них составить треугольник. В случае утвердительного ответа определить его тип: остроугольный, прямоугольный или тупоугольный.

Вход. Три целых числа a, b, c – длины трех отрезков.

Выход. Строка, содержащая информацию о треугольнике: “ACUTE”, если он остроугольный, “RIGHT” если прямоугольный и “OBTUSE” если тупоугольный. Если из трех отрезков составить треугольник нельзя, то вывести “NONE”.

Из трех отрезков a, b, c можно составить треугольник, если выполняется неравенство треугольника: сумма длин двух любых сторон треугольника строго больше длины третьей.

Из теоремы Пифагора следует, что треугольник со сторонами a, b, c является прямоугольным, если выполняется одно из следующих равенств:

a 2 = b 2 + c 2 или b 2 = a 2 + c 2 или c 2 = a 2 + b 2

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

a 2 b 2 + c 2 , b 2 a 2 + c 2 , c 2 a 2 + b 2

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

a 2 > b 2 + c 2 или b 2 > a 2 + c 2 или c 2 > a 2 + b 2

Условие тупоугольности можно не проверять: если треугольник не является ни остроугольным, ни прямоугольным, то он является тупоугольным. Для вывода результата воспользуемся типом string .

if ((a >= b + c) or (b >= a + c) or (c >= a + b))

then res := ‘NONE’ else

if ((a*a = b*b + c*c) or (b*b = a*a + c*c) or (c*c = a*a + b*b))

then res := ‘RIGHT’ else

then res := ‘ACUTE’ else

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

Ответ на вопрос дает сортировка. Отсортируем по возрастанию длины исходных отрезков. Пусть у нас далее имеют место неравенства: a £ b £ c. Тогда для проверки неравенства треугольника достаточно проверить лишь a + b > c, так как оба других неравенства b + c > a и a + c > b выполняются. Для проверки прямоугольности достаточно проверить только равенство c 2 = a 2 + b 2 , так как при a £ b £ c гипотенузой может быть только сторона c. В случае тупоугольности наибольшей стороной может быть только c, поэтому для существования тупого угла в треугольнике достаточно выполнение условия c 2 > a 2 + b 2 . Треугольник будет остроугольным, если c 2 a 2 + b 2 .

Читайте также:  Окружность живота при доношенной беременности равна

Например, в языке Си, отсортировать три числа можно так:

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

Если мы сможем эффективно отсортировать числа a, b, c, то программа примет вид:

if c >= a + b then res := ‘NONE’ else

if c*c = a*a + b*b then res := ‘RIGHT’ else

Источник

Задача «Треугольник»

Заданы длины трех отрезков a, b, c. Необходимо определить, можно ли из них составить треугольник. В случае утвердительного ответа определить его тип: остроугольный, прямоугольный или тупоугольный.

Вход. Три целых числа a, b, c – длины трех отрезков.

Выход. Строка, содержащая информацию о треугольнике: “ACUTE”, если он остроугольный, “RIGHT” если прямоугольный и “OBTUSE” если тупоугольный. Если из трех отрезков составить треугольник нельзя, то вывести “NONE”.

Из трех отрезков a, b, c можно составить треугольник, если выполняется неравенство треугольника: сумма длин двух любых сторон треугольника строго больше длины третьей.

Из теоремы Пифагора следует, что треугольник со сторонами a, b, c является прямоугольным, если выполняется одно из следующих равенств:

a 2 = b 2 + c 2 или b 2 = a 2 + c 2 или c 2 = a 2 + b 2

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

a 2 b 2 + c 2 , b 2 a 2 + c 2 , c 2 a 2 + b 2

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

a 2 > b 2 + c 2 или b 2 > a 2 + c 2 или c 2 > a 2 + b 2

Условие тупоугольности можно не проверять: если треугольник не является ни остроугольным, ни прямоугольным, то он является тупоугольным. Для вывода результата воспользуемся типом string .

if ((a >= b + c) or (b >= a + c) or (c >= a + b))

then res := ‘NONE’ else

if ((a*a = b*b + c*c) or (b*b = a*a + c*c) or (c*c = a*a + b*b))

then res := ‘RIGHT’ else

then res := ‘ACUTE’ else

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

Читайте также:  Как узнать окружность круга если известен диаметр

Ответ на вопрос дает сортировка. Отсортируем по возрастанию длины исходных отрезков. Пусть у нас далее имеют место неравенства: a £ b £ c. Тогда для проверки неравенства треугольника достаточно проверить лишь a + b > c, так как оба других неравенства b + c > a и a + c > b выполняются. Для проверки прямоугольности достаточно проверить только равенство c 2 = a 2 + b 2 , так как при a £ b £ c гипотенузой может быть только сторона c. В случае тупоугольности наибольшей стороной может быть только c, поэтому для существования тупого угла в треугольнике достаточно выполнение условия c 2 > a 2 + b 2 . Треугольник будет остроугольным, если c 2 a 2 + b 2 .

Например, в языке Си, отсортировать три числа можно так:

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

Если мы сможем эффективно отсортировать числа a, b, c, то программа примет вид:

if c >= a + b then res := ‘NONE’ else

if c*c = a*a + b*b then res := ‘RIGHT’ else

Источник

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

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

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

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

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

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

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

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

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

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

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

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

Источник

Задача 14) Заданы координаты вершин треугольника. Определить, является ли этот треугольник равнобедренным, равносторонним, прямоугольным.

Российская Федерация

Тюменская область

ХАНТЫ-МАНСИЙСКИЙ АВТОНОМНЫЙ ОКРУГ – ЮГРА

Департамент образования и науки

Сургутский государственный университет

Ханты-Мансийского автономного округа

Инженерно-физический факультет Кафедра автоматики и компьютерных систем

По лабораторной работе № 2

По дисциплине «Структурное программирование»

Выполнил : студент группы 12-11а

Задача 14) Заданы координаты вершин треугольника. Определить, является ли этот треугольник равнобедренным, равносторонним, прямоугольным.

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

Длина стороны находится по формуле:

Проверка на прямоугольность проводится с использованием теоремы Пифагора (если сумма квадратов двух длин сторон равна квадрату длины третьей, то треугольник является прямоугольным).

Треугольник является равносторонним, если длины всех его сторон равны.

Треугольник является равнобедренным, если длины двух его сторон равны.

2) Блок-схема:

“Треугольник равносторонний”
Да
Нет
AB=BC=CA;
“Треугольник прямоугольный”
Нет
Да
AB 2 +BC2=CA 2 || AB 2 +CA 2 =BC 2 || BC 2 +CA 2 =AC 2 ||
AB=sqrt((bx-ax) 2 +(by-ay) 2 ); BC=sqrt((cx-bx) 2 +(cy-by) 2 ); CA=sqrt((ax-cx) 2 +(ay-cy) 2 );
Запрос и получение исходных данных
Начало
AB=BC || BC=CA || AB=CA ||
Нет
Да
“Треугольник равнобедренный”
“Треугольник произвольный”
Конец

3) Основная часть программы на языке C++:

int _tmain(int argc, _TCHAR* argv[])

printf(«Koordinata A x : «);

printf(«Koordinata A y : «);

printf(«Koordinata B x : «);

printf(«Koordinata B y : «);

printf(«Koordinata C x : «);

printf(«Koordinata C y : «);

printf(«\nTakogo treugol’nika ne suschestvuet\n»);

if ((abs(AB-BC) 2 +BC 2 -AC 2 =0илиAB 2 + AC 2 -BC 2 =0 илиAC 2 +BC 2 -AB 2 =0, то треугольник прямоугольный. Так как при работе с переменными типа double(и производными) может возникнуть погрешность, выражение сравнивалось с числом, превышающем данную погрешность, но достаточно малой для данной задачи.

Конструкция для проверка, является ли треугольник равносторонним:

Источник

Поделиться с друзьями
Объясняем