А54

Задача:

Даны действительные числа [latex]x_{1}[/latex], [latex]x_{2}[/latex], [latex]x_{3}[/latex], [latex]y_{1}[/latex],[latex]y_{2}[/latex], [latex]y_{3}[/latex].

Принадлежит ли начало координат треугольнику с вершинами [latex]\left( x_{1} ; y_{1} \right) [/latex], [latex]\left( x_{2} ; y_{2} \right) [/latex], [latex]\left( x_{3} ; y_{3} \right) [/latex]?

 
  [latex] x_{1} [/latex]   [latex] y_{1} [/latex]   [latex] x_{2} [/latex] [latex] y_{2} [/latex]   [latex] x_{3} [/latex]   [latex] y_{3} [/latex] Предполагаемый результат Вывод
 -400  0  240  1  210  1  Не принадлежит  Тест пройден
 -400  0  240  1  210  -1  Принадлежит  Тест пройден
 0  0  240  -1  2100  -1  Принадлежит  Тест пройден
 -2  -2  5  -2  1  10  Принадлежит  Тест пройден
 3  0  40  0  15  10  Не принадлежит  Тест пройден
 -24  -2  29  -2  29  10  Принадлежит Тест пройден
 -12  -5  14  -5  7  -5  Жаль вас расстраивать… Тест пройден

 

 

Описание:

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

 

Краткий алгоритм:

  1. Объявление переменных, обозначающих координаты вершин  треугольника.
  2. Ввод координат вершин треугольника.
  3. Небольшая проверка  правильности ввода.
  4. С помощью общего уравнения прямой [latex]\frac{y-y_{1}}{y_{2}-y_{1}}=\frac{x-x_{1}}{x_{2}-x_{1}}[/latex], приведенного в вид :[latex]\left(y_{2}-y_{1} \right) \left(x-x_{1}\right)-\left(y-y_{1} \right) \left(x_{2}-x_{1}\right)=0[/latex],- определяем расположение вершин треугольника относительно противоположных им сторон (название переменной показывает, какую вершину проверяют), а также начала координат относительно тех же сторон, после чего следует умножение соответствующих величин. В случае, если произведение больше, либо равно нулю во всех трех случаях, можно сделать вывод о том, что точка находится внутри треугольника.
  5. Вывод вердикта и окончание работы.

Ссылка на Ideone.

Related Images:

А18

Задача. Треугольник задан величинами своих углов [latex]x[/latex], [latex]y[/latex], [latex]z[/latex]   и радиусом описанной окружности [latex]R[/latex].

Найти стороны треугольника.

x y z R a b c Комментарий
95 36 49 3  5.98 3.53 4.53 Тест пройден
90 45 45 7 14 9.9 9.9 Тест пройден
60 60 60 14 24.25 24.25 24.25 Тест пройден
47 34 56 9 Неверное значение углов.

Для решения этой задачи использовалась формулы:

[latex]a=R\sin(x)[/latex] [latex]b=R\sin(y)[/latex] [latex]c=R\sin(z)[/latex]

Если при выполнении программы вы зададите некоторое значение углов и при проверке программой окажется , что значение углов  больше или меньше 180+»eps» ( eps=0.01 ) , то программа не выполнит поставленную задачу, т.к. в этом случае треугольник существовать не будет.

Для выполнения программы и проверки тестов вы можете воспользоваться этой ссылкой

Related Images:

Ю2.7

Задача.

Треугольник и круги.

Лежит ли заданный  на плоскости треугольник АВС в области пересечения заданных кругов:

[latex](x-a1)^2+(y-b1)^2<r1^2[/latex] , и [latex](x-a2)^2+(y-b2)^2<r2^2[/latex]  ?
Ссылка на программу на С++: http://ideone.com/NYTAWN

Код программы на Java:

Ссылка на программу на Java:http: //ideone.com/QZ7RB1

Решение:

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

Тест

a1 b1 r1 a2 b2 r2 ax bx cx ay by cy Принадлежит?
1 2 3 3 4 5 6 7 8 6 7 4 нет
1 2 15 3 4 12 6 7 8 6 7 4 да
7 5 10 4 6 16 6 7 3 5 6 7 да
7 5 5 4 6 3 6 7 3 5 6 7 нет

 

Related Images:

Ю2.1

Задача. Заданы три числа: [latex]a[/latex], [latex]b[/latex], [latex]c[/latex]. Определить, могут ли они быть сторонами треугольника, и если да, то определить его тип: равносторонний, равнобедренный, разносторонний. Замечание. Условие существования треугольника: [latex]a\leq b+c[/latex];  [latex]b\leq a+c[/latex];  [latex]c\leq a+b[/latex]. Нельзя исключать экстремальных случаев, когда одна (или несколько) сторон равны нулю либо когда одно из неравенств переходит в равенство (треугольник нулевой площади).

a b c Тип треугольника Комментарий
0 3 7 Не треугольник
-2 5 4 Не треугольник
1 3 4 Треугольник нулевой площади Пройден
7 7 7 Равносторонний Пройден
15 9 15 Равнобедренный Пройден
3 4 5 Разносторонний Пройден
После ввода чисел [latex]a [/latex], [latex]b [/latex], [latex]c [/latex] проверяем, есть ли равные нулю или есть ли сторона, равная сумме двух других сторон, если такие числа или такая сторона есть, то такой треугольник с нулевой площадью. Далее проверяем условие существования треугольника. Если в треугольнике все стороны равны, то он является равносторонним, если равны только две стороны-равнобедренным, а если нет равных между собой сторон, то треугольник разносторонний. Также мы проверяем, есть ли числа меньше нуля (если такие числа есть, то треугольника со сторонами [latex]a [/latex], [latex]b [/latex], [latex]c [/latex] не существует).

Для проверки выполнения программы можно воспользоваться ссылкой.

Решение на Java:

Ссылка на решение.

Related Images:

А23б

Задача. Треугольник задан длинами сторон. Найти длины медиан.

Длины сторон: [latex]a[/latex], [latex]b[/latex], [latex]c[/latex]. Длины медиан: [latex]a_1[/latex], [latex]b_1[/latex], [latex]c_1[/latex].

Тесты:

a b c a1 b1 c1 Комментарий
1 4 5 4,5 3 1,5 Пройден
21 12 9 1,5 15 16,5 Пройден
24 17 9 6,40312 16,0078 20,3039 Пройден
 

Решение:

Когда известны все стороны треугольника, медианы вычисляются по следующей формуле: [latex]\frac{1}{2}\sqrt{2a^2+2b^2-c^2}[/latex], где [latex]c[/latex] — сторона к которой проведена медиана, а [latex]a[/latex] , [latex]b[/latex] стороны треугольника.

Для проверки выполнения программы можно воспользоваться ссылкой .

Решение на Java:

Ссылка на решение.

Related Images:

Ю2.2

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

Тесты:

угол №1 угол №2 угол №3 Результат Комментарий
30 60 90 треугольник прямоугольный тест пройден
60 60 60 треугольникостроугольный равностороннийравнобедренный тест пройден
70 70 40 треугольникостроугольный равнобедренный тест пройден
45 90 45 треугольник прямоугольный равнобедренный тест пройден
80 20 80 треугольникостроугольный равнобедренный тест пройден
30 120 30 треугольник тупоугольный равнобедренный тест пройден
50 90 150 треугольник не существует тест пройден
120 150 160 треугольник не существует тест пройден

Код программы:

 

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

1) Вводим данные стороны a,b,c;

2) Вводим условия для выполнимости определения треугольников (ограничения для углов):

а) для остроугольных

б) для равносторонних

в) для прямоугольных

г) пишем условие, при котором выполняется для тупоугольных треугольников

д) для равнобедренных

е) если ни одно из условий не выполняется, значит треугольника не существует

Посмотреть и протестировать программу можно на этом сайте: http://ideone.com/uAyr4x

 

Related Images:

А23a

Задача: Треугольник задан длинами сторон [latex] a,b,c [/latex].

Найти длины высот [latex] h_{1},h_{2},h_{3}[/latex].

a b c p h1 h2 h3 Коментарий
1 2 3 3 0 0 0 Пройден
3 4 5 6 4 3 2,4 Пройден
6 8 10 12 8 6 4,8 Пройден
13 14 15 21 12,92 12 11,2 Пройден
Решение:
Высота треугольника находится по формуле [latex]h=\frac{2S}{a}[/latex].
[latex] S [/latex]- площадь треугольника [latex] S=\sqrt{p(p-a)(p-b)(p-c)} [/latex].
[latex] p [/latex]- полупериметр треугольника [latex] p=\frac{a+b+c}{2} [/latex].
Затем вычисляем высоты [latex] h_{1},h_{2},h_{3}[/latex].

Related Images:

Ю1.25

Задача Ю 1.25

Задача: Найти внутренние углы треугольника abc по точкам, заданным на координатной плоскости и полученные значения углов перевести из радиан в градусы.

тесты:

x1 y1 x2 y2 x3 y3 результат №1 результат №2 результат №3 комментарий
0 0 1 0 0 1 45 90 45 тест пройден
1 3 1 1 2 1 63,4 26,5 90 тест пройден
1 4 2 3 1 1 26,5 45 108,4 тест пройден
1 2 1 1 2 1 45 45 90 тест пройден

 

 Идея решения задачи: В начале программы мы объявляем нужные библиотеки, затем после оператора double перечисляем все используемые переменные, после этого, с помощью оператора  scanf  объявляем те переменные, которые нужно будет вводить для выполнения программы, далее пишем формулы:

1) Для вычисления длин сторон по координатам точек

 

 

 

2) Для вычисления углов в радианах

3) Для перевода значений углов из радиан в градусы.

После этого, с помощью оператора printf   перечисляем переменные, которые программа будет вычислять и показывать нам. После компиляции вводим в строчку stdin значения координат точек, и в поле stdout программа выдает нам значения углов.

Чтоб посмотреть и протестировать программу, пройдите по этой ссылке: http://ideone.com/7YLyBt

Related Images:

Ю1.24

Задача. Треугольник задается координатами вершин на плоскости: [latex]A(x_{1},y_{1}), B(x_{2},y_{2}), C(x_{3},y_{3})[/latex]. Найти точку пересечения биссектрис [latex] I(x,y)[/latex]  треугольника [latex]ABC[/latex] (центр вписанной в него окружности).

 

Тесты:

 
[latex]x_{1}[/latex] [latex]y_{1}[/latex] [latex]x_{2}[/latex] [latex]y_{2}[/latex] [latex]x_{3}[/latex] [latex]y_{3}[/latex] [latex]x[/latex] [latex]y[/latex] Комментарий
0 4 3 0 0 0 1.00 1.00 Пройден
0 -4 -3 0 0 0 -1.00 -1.00 Пройден
-5 -1 0 -13 -5 -13 -3.00 -11.00 Пройден
1 1 5 1 3 4 3.00 2.07 Пройден

Код на С

Код на Java

Решение:

Для нахождения координат биссектрисы воспользуемся формулами :

[latex]x=\frac{ax_{1}+bx_{2}+cx_{3}}{a+b+c}[/latex],

[latex]y=\frac{ay_{1}+by_{2}+cy_{3}}{a+b+c}[/latex] ,

где [latex] a [/latex]-длина стороны [latex]CB[/latex], [latex]b[/latex]-длина стороны [latex]AC[/latex], [latex]c[/latex]-длина стороны [latex]AB[/latex].

 

Для этого необходимо предварительно найти длины сторон по формуле :

[latex] AB=\sqrt{(x_{1}-x_{2})^{2}+(y_{1}-y_{2})^{2}} [/latex], где [latex] A(x_{1},y_{1}), B(x_{2},y_{2}) [/latex].

Related Images:

Ю1.17

ЗАДАЧА

tupougolnyi-treugolnik

Длинна высоты. Треугольник [latex]ABC[/latex] задан длинами своих сторон. Найти длину высоты, опущенной из вершины А.

Экстремальные тесты: сумма двух сторон равна третьей; одна из сторон равна нулю.

Для справки.

Высота в произвольном треугольнике вычисляется по формуле:

[latex]h=2\cdot\frac{\sqrt{(p\cdot(p-a)\cdot(p-c)\cdot(p-b)}}{b}[/latex]

где

[latex]p=\frac{a+b+c}{2}[/latex]

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

a

b

c

h

Коментарии

2 3 4 1.94 Тест пройден.
0 4 5 Ошибка в условии.Одна из сторон равна или меньше 0.
3 3 6 Ошибка в условии. Сумма двух сторон равна или меньше третьей стороны.
-4 3 6 Ошибка в условии.Одна из сторон равна или меньше 0.
6 6.5 2.6 2.4 Тест пройден.
4.4 4.4 5 4.11 Тест пройден.
4 4 4 3.46 Тест пройден.

Программа позволяет вычислять высоту произвольного треугольника по его трем сторонам. Существуют некоторые условия, при которых треугольник не может существовать, следовательно не может существовать его высота.
Алгоритм проверяет возможность  существования  треугольника с исходными данными: сумма длин двух сторон не должна равняться длине третьей стороны; длина стороны не должна равняться нулю; длина стороны не должна быть отрицательной; сумма длин двух сторон не должна быть меньше длины третьей.

Код на С++:

Код на Java:

 

Для выполнения программы и проверки тестов можно воспользоватся следующей ссылкой (C++)/ссылкой(Java).

Related Images:

Ю1.22

Задача.

Треугольник задается координатами своих вершин на плоскости: [latex]A(x1,y1)[/latex], [latex]B(x2,y2)[/latex], [latex]C(x3,y3)[/latex]. Найти площадь треугольника ABC.

Тесты.

A B C Площадь Комментарий
[latex](0;0)[/latex] [latex](0;4)[/latex] [latex](5;0)[/latex] 10 Пройден
[latex](-1.5;2)[/latex] [latex](2.5;-2)[/latex] [latex](4;4.25)[/latex] 15.5 Пройден
[latex](0;1)[/latex] [latex](0;3)[/latex] [latex](0;4)[/latex] 0 Пройден

В третьем примере имеем вырожденный треугольник, для которого площадь будет равна нулю.

Код.

С++

Java

Решение.

Для вычисления площади воспользуемся формулой:

[latex]S_{ABC}=\frac{\left|(x_{B}-x_{A})(y_{C}-y_{A})-(x_{C}-x_{A}) (y_{B}-y_{A})\right|}{2}[/latex]

Для выполнения программы и проверки тестов можно воспользоваться данной ссылкой (C++) или другой (Java).

Related Images:

Ю2.32

Задача:  Из круга какого наименьшего радиуса можно вырезать треугольник со сторонами   [latex]a,b,c[/latex]

Указание: Пусть  [latex]c[/latex]    — большая из сторон треугольника. Если угол [latex]C[/latex] — тупой, сторона совпадает с диаметром круга и его радиус: [latex]r=\frac {C}{2}[/latex] .
В противном случае имеем описанную окружность: [latex]r=\frac {abc}{4\sqrt {p(p-a)(p-b)(p-c)}}[/latex] где [latex]p=\frac{(a+b+c)}{2}[/latex]

a b c r Комментарий:
6 8 11 5.5 Пройден (Есть тупой угол С)
11 8 6 5.5 Пройден (Есть тупой угол А)
8 11 6 5.5 Пройден (Есть тупой угол B)
5.97 9.55 11.07 5.53894 Пройден (Дробные значения)
3 3 4 2.01246 Пройден (Равнобедренный без тупого угла)
3 3 6 3 Пройден (Равнобедренный с тупым углом)
7 7 7 4.04145 Пройден (Равносторонний)
1 1 20 не треугольник Не пройден (Не треугольник)

До ветвлений:

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

2. Вычисление большей стороны треугольника

Алгоритм ветвлений:

Один из углов треугольника  находится в сегменте (90, 180)
Правда Не правда
[latex]r=\frac {C}{2}[/latex] . [latex]r=\frac{abc}{ 4\sqrt{ p(p-a)(p-b)(p-c)} }[/latex]
Вывод

 

Проверить программу на ideone

Вывод: Программа выполняет поставленные задачей условия. Если хоть один угол находится в сегменте (90, 180), то [latex]r=\frac{finding}{2}[/latex]  , где  [latex]finding[/latex]   это большая сторона треугольника (см. 8). В другом случае  [latex]r=\frac{abc}{ 4\sqrt{ p(p-a)(p-b)(p-c)} }[/latex]   . Если треугольник не существует — не выполняется и программа сообщает об этом.

Related Images:

Ю2.14

Задача.

Треугольник  и точка. Лежит ли точка  [latex] M \left( x_{m}, y_{m} \right) [/latex]  внутри треугольника, заданного координатами своих вершин  [latex] \left( x_{A}, y_{A} \right) [/latex],   [latex] \left( x_{A}, y_{A} \right) [/latex],   [latex] \left( x_{A}, y_{A} \right) [/latex].

Комментарий.

Предполагаем, что треугольник невырожденный, т.е. точки  [latex] A [/latex], [latex] B [/latex]  и  [latex] C [/latex]  не лежат на одной прямой.

Слово «внутри» будем понимать следующим образом: точка «лежит внутри треугольника», если она принадлежит внутренности (в топологическом смысле) этого треугольника. Как следствие, если точка лежит на одной из сторон треугольника, внутри треугольника она НЕ лежит.

Тесты.

Ввод Вывод
0  0  1  0  1  1  0.5  0.25 Да
0  0  1  0  1  1  -1  -1.5 Нет
-1.5  -1.5  -1.5  4  1  0.5  -1  2 Да
-1.5  -1.5  -1.5  4  1  0.5  -1  0 Нет
0.3  0.2  1.3  0.2  0.3  0.8  0.7  0.4 Да
0.3  0.2  1.3  0.2  0.3  0.8  0.3  0.6 Нет
2  1  0.5  -2  -2  -0.5  0.5  -1 Да
2  1  0.5  -2  -2  -0.5  2  1 Нет

Рассмотрим четыре основных типа треугольников:

  • ровно одна сторона параллельна оси абсцисс;
  • ровно одна сторона параллельна оси ординат;
  • две стороны параллельны координатным осям;
  • ни одна из сторон не параллельна ни к одной из осей.

Для каждого типа рассмотрим два случая: точка принадлежит его внутренности и не принадлежит. При этом рассмотрим случай (восьмая строка таблицы), когда точка лежит на стороне и постараемся рассмотреть случаи, когда координатами являются нецелые и отрицательные числа.

По моим подсчётам есть 96 вариантов расположения треугольника и точки, с учётом параллельности/непараллельности сторон осям, расположения вершин по координатным четвертям и принадлежности/непринадлежности точки внутренности треугольника. Поэтому хочется верить, что выбранные тестовые примеры достаточно показательные.

Код.

Ideone (C++)

Код (Java)

Ideone (Java)

Решение.

  1.  Составим уравнения сторон треугольника. Как известно, в эвклидовой геометрии в прямоугольных декартовых координатах уравнение прямой, проходящей через две (различные!) точки  [latex] \left( r1, r2 \right) [/latex]  и  [latex] \left( s1, s2 \right) [/latex]  есть  [latex] \left(y — r2 \right) \left( s1 — r1 \right) — \left( x — r1 \right) \left( s2 — r2 \right) = 0[/latex] . Эта прямая разбивает плоскость на три части: собственно прямую и две открытые полуплоскости, задаваемые неравенствами  [latex] \left(y — r2 \right) \left( s1 — r1 \right) — \left( x — r1 \right) \left( s2 — r2 \right) < 0[/latex]  и  [latex] \left(y — r2 \right) \left( s1 — r1 \right) — \left( x — r1 \right) \left( s2 — r2 \right) > 0[/latex].
  2. Как известно, точка лежит внутри невырожденного треугольника, если и только если она лежит с каждой вершиной этого треугольника в одной полуплоскости относительно стороны, противоположной этой вершине.
  3. Из  1.  заключаем, что точки с декартовыми координатами  [latex] \left( x,y \right)[/latex]  и  [latex] \left( u,v \right)[/latex]  лежат по одну сторону от прямой, проходящей через точки  [latex] \left( r1,r2 \right)[/latex]  и  [latex] \left( s1,s2 \right)[/latex], если и только если числа  [latex] \left(y — r2 \right) \left( s1 — r1 \right) — \left( x — r1 \right) \left( s2 — r2 \right)[/latex]  и   [latex] \left(v — r2 \right) \left( s1 — r1 \right) — \left( u- r1 \right) \left( s2 — r2 \right)[/latex]   отличны от нуля и одного знака, т.е. если произведение этих чисел  —  строго положительное число.
  4. Проверяем условие из пункта  3.  для вершины  [latex] C [/latex]  и стороны  [latex] AB [/latex]. Если условие выполнено, переходим к пункту  5. В противном случае точка внутри треугольника не лежит.
  5. Проверяем  условие из пункта  3.  для вершины  [latex] B [/latex]  и стороны  [latex] AC [/latex]. Если условие выполнено, переходим к пункту  5. В противном случае точка внутри треугольника не лежит.
  6. Проверяем  условие из пункта  3.  для вершины  [latex] A [/latex]  и стороны  [latex] BC [/latex]. Если условие выполнено, точка лежит внутри треугольника. В противном случае точка внутри треугольника не лежит.

Related Images:

Ю1.16

Задача: в равнобедренном прямоугольном треугольнике известна высота h, опущенная на гипотенузу. Найти стороны треугольника.

h a b c Комментарий
5 7.07107 7.07107 10 Пройдено.
7 9.89949 9.89949 14 Пройдено.
3.53553 5 5 7.07106 Пройдено.
Довольно простая задача в виду того, что прямоугольный равнобедренный треугольник это квадрат с сечением по диагонали. Диагональ [latex]c=a\sqrt { 2 } [/latex],  а

[latex]h=\frac { a\sqrt {2}}{2}[/latex],   т.к. это половина диагонали.

Из этого следует, что      [latex]a=\frac{c}{\sqrt{ 2 }}[/latex],   [latex]a=b[/latex]

 

Алгоритм выполнения задачи:

1. Узнаю [latex]c=2h[/latex]

2. Узнаю    [latex]a=\frac{c}{\sqrt{ 2 }}[/latex],   [latex]a=b[/latex]

 

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

Related Images:

А25а

Задача «Периметр треугольника». Произвольный треугольник задан координатами его вершин [latex]A[/latex],  [latex]B[/latex],  [latex]C[/latex]. Вычислите длины его сторон  [latex]|AB|[/latex],  [latex]|BC|[/latex],  [latex]|AC|[/latex], а также его периметр  [latex]p[/latex].

Для нахождения длин сторон используется формула расстояния между точками:

[latex]|AB|=\sqrt{\left(x_{A}-x_{B}\right)^{2}+\left(y_{A}-y_{B}\right)^{2}}[/latex],

[latex]|BC|=\sqrt{\left(x_B-x_C\right)^2+\left(y_B-y_C\right)^2}[/latex],

[latex]|AC|=\sqrt{\left(x_A-x_C\right)^2+\left(y_A-y_C\right)^2}[/latex],

периметр – это сумма длин сторон:

[latex]p=|AB|+|BC|+|AC|[/latex]

[latex]A[/latex] [latex]B[/latex] [latex]C[/latex] [latex]\left|AB\right|[/latex] [latex]\left|BC\right|[/latex] [latex]\left|AC\right|[/latex] [latex]p[/latex]  Комментарий
(0,0) (0,3) (4,0) 3 5 4 12 Пройден
(0,0) (0,1) (1,0) 1 [latex]\sqrt{2}\approx 1.414[/latex] 1 [latex]2+\sqrt{2}\approx 3.414[/latex] Пройден
(0,0) (0,1) (0,2) 1  1 2 4 Пройден

Заметим, что в третьем тесте треугольник является вырожденным – в программе нет отдельной проверки на вырожденность треугольника, для таких треугольников все характеристики рассчитываются верно.

Код программы:

Программа протестирована в среде ideone.com и Virtual C. Пройден тест «Test Coding Rules» среды Virtual C на стиль написания кода. Для всех числовых значений в программе используется вещественный тип данных двойной точности. Исходные данные – координаты точек [latex]A[/latex], [latex]B[/latex], [latex]C[/latex] – содержатся в переменных xA, yA, xB, yB, xC, xC, значения которых вводятся со стандартного потока ввода.

Проверить работу программы можно здесь.

Related Images:

А27

Задача А27. Даны действительные положительные числа [latex]a[/latex], [latex]b[/latex], [latex]c[/latex]. По трём сторонам с длинами [latex]a[/latex], [latex]b[/latex], [latex]c[/latex] можно построить треугольник. Найти углы треугольника.

[latex]a[/latex] [latex]b[/latex] [latex]c[/latex] [latex]\alpha[/latex] [latex]\beta[/latex] [latex]\gamma [/latex] Комментарий
3 4 5 0,643501 0,927295 1,570796 Тест пройден.
6,8 5,2 9,3 0,801375 0,581525 1,758693 Тест пройден.
7,3 5 8,1 1,091967 0,653414 1,396212 Тест пройден.

Код программы (C):

Код программы (Java):

 

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

Так как изначально в условии задачи сказано, что из отрезков с длинами [latex]a[/latex], [latex]b[/latex], [latex]c[/latex] можно построить треугольник, то решение задачи сводится к нахождению углов по  следствию из «Теоремы косинусов»:  [latex]\cos\alpha=\frac{b^{2}+c^{2}-a^{2}}{2bc}[/latex]. Затем, чтобы найти меру угла в радианах, достаточно просто взять [latex]\arccos(\cos\alpha)[/latex].

Аналогично вычислены меры двух других углов в радианах.

В программе использован тип данных с плавающей точкой.

Для выполнения программы и проверки тестов можно воспользоваться следующим объектом (С) или этим (Java).

Related Images: