математики и программисты нужна помощь в программе на паскале!

Есть задача:

С клавиатуры вводится число a и число b ∈ {1, 2, 3, 4} (именно в этом порядке). Рассмотрим равнобедренный прямо- угольный треугольник. Если b = 1, то a – периметр; если b = 2, то a – биссектриса, опущенная на катет; если b = 3, то a – площадь вписанной окружности, если b = 4, то a – катет. Выведите на экран периметр, биссектрису, опущенную на катет, площадь вписанной окружности и катет треугольника.**

Код программы к задаче:

var  
  a,b:integer;  
  c:real;  
begin  
read(a, b);  
case b of
  1: c := a / (2 + sqrt(2));
  2: c := a * cos(pi / 8); 
  3: c := sqrt(a / pi) / (1 - 1 / sqrt(2)); 
  4: c := a
end;
writeln('Катет: ', c);
writeln('Периметр: ', c * (2 + sqrt(2)));
writeln('Площадь: ', pi * sqr(c * (1 - 1 / sqrt(2))));
writeln('Биссектриса: ', c / cos(pi / 8));
end.

В задаче "a" выступает как катет ?


Ответы (1 шт):

Автор решения: rotabor

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

После того, как a и b введены, рассчитывается катет c, а потом и все остальные требуемые величины на основании величины c.

Я бы поменял тип a на real.

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

Чтобы не использовать всю комбинацию зависимостей, в качестве промежуточной величины используется катет, от которого вычисляется всё остальное.

Таким образом, на первом этапе программы (case) в зависимости от значения b вычисляется катет c. То есть если b = 1, то a - это периметр, и c вычисляется по формуле зависимости длины катета от периметра; если b = 2, то a - это биссектриса, и c вычисляется по формуле зависимости длины катета от биссектрисы.

На втором этапе программы после writeln('Катет: ', c) вычисляются и одновременно выводятся все остальные величины.

→ Ссылка