Вопрос задан 30.10.2026 в 19:46. Предмет Информатика. Спрашивает Чернов Андрей.

Дан произвольный треугольник 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\).

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос