Дан произвольный треугольник ABC, для которого определен следующий набор характерных параметров: a, b, c — стороны треугольника; α, β, γ — углы (в градусах); h — высота, опущенная на сторону c; S — площадь; P — периметр треугольника. По трем заданным параметрам a, b, S, вычислить все остальные. Как это записать в Паскале?
Ответы на вопрос
По \(a\), \(b\) и \(S\) сначала находят угол \(\gamma\):
\[ \sin \gamma = \frac{2S}{ab}. \]
Если \(0 < \frac{2S}{ab} < 1\), возможны два значения угла: \(\gamma\) и \(180^\circ-\gamma\). Для каждого из них вычисляют:
\[ c=\sqrt{a^2+b^2-2ab\cos\gamma}, \qquad h=\frac{2S}{c}, \qquad P=a+b+c. \]
Остальные углы можно найти по теореме косинусов:
\[ \alpha=\arccos\frac{b^2+c^2-a^2}{2bc}, \qquad \beta=180^\circ-\alpha-\gamma. \]
В Паскале это можно записать так:
uses Math;
var a, b, s, x, g, c, h, p, al, be: real;
readln(a, b, s);
x := 2 * s / (a * b);
if (x <= 0) or (x > 1) then
writeln('Такого треугольника не существует')
else
begin
g := ArcSin(x);
c := Sqrt(a*a + b*b - 2*a*b*Cos(g));
h := 2*s/c;
p := a + b + c;
al := ArcCos((b*b + c*c - a*a)/(2*b*c));
be := Pi - al - g;
writeln('c=', c:0:2, ' h=', h:0:2, ' P=', p:0:2);
writeln('alpha=', al*180/Pi:0:2, ' beta=', be*180/Pi:0:2, ' gamma=', g*180/Pi:0:2);
end;
Если \(0 < x < 1\), для второго возможного треугольника нужно повторить вычисления, заменив \(g\) на \(\mathrm{Pi}-g\).
Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili

