математики и программисты нужна помощь в программе на паскале!
Есть задача:
С клавиатуры вводится число 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 шт):
В задаче a выступает как периметр, или биссектриса, опущенная на катет, или площадь вписанной окружности, или катет в зависимости от значения b.
После того, как a и b введены, рассчитывается катет c, а потом и все остальные требуемые величины на основании величины c.
Я бы поменял тип a на real.
В равнобедренном прямоугольном треугольнике все вышеперечисленные величины однозначно зависят друг от друга, поэтому зная одну величину, можно вычислить все остальные.
Чтобы не использовать всю комбинацию зависимостей, в качестве промежуточной величины используется катет, от которого вычисляется всё остальное.
Таким образом, на первом этапе программы (case) в зависимости от значения b вычисляется катет c. То есть если b = 1, то a - это периметр, и c вычисляется по формуле зависимости длины катета от периметра; если b = 2, то a - это биссектриса, и c вычисляется по формуле зависимости длины катета от биссектрисы.
На втором этапе программы после writeln('Катет: ', c) вычисляются и одновременно выводятся все остальные величины.