По данным значениям аргументов a и b вычислить значение функции - Pascal (81158)
Формулировка задачи:
Решение задачи: «По данным значениям аргументов a и b вычислить значение функции»
{функция определения максимума от x, y} function max(x, y: double): double; begin if x > y then max := x else max := y end; {ПРОЦЕДУРА преобразования аргументов: x = x + y и одновтеменно y = x - y} procedure arg(var x, y: double); begin x := x + y; y := x - y - y end; {проверка знаменателя на допустимость: rt = true при max(y + x, y - x) <> 0} function rt(x, y: real): boolean; begin arg(y, x); rt := max(y, x) <> 0 end; {вычисление дроби} function d(x, y: double): double; begin arg(x, y); d := max(x, y) / max(x, -y) end; {функция по заданию} function f(x, y: double): double; begin f := d(x, y) + d(x * x, y * y) end; {вызывающая программа} var a, b: double; begin write('a = '); readln(a); write('b = '); readln(b); if rt(a, b) and rt(a * a, b * b) then write('f(a, b) = ', f(a, b)) else write('Function is undefined.'); readln end.
Объяснение кода листинга программы
{Функция определения максимума от x, y} Функция max(x, y: double): double; BEGIN IF x > y THEN max := x ELSE max := y END; {Процедура преобразования аргументов: x = x + y и одновременное y = x - y} Procedure arg(var x, y: double); BEGIN x := x + y; y := x — y — y END; {Проверка знаменателя на допустимость: rt = true при max(y + x, y — x) <> 0} Function rt(x, y: real): Boolean; BEGIN Arg(y, x); Rt := Max(y, x) <> 0 END; {Вычисление дроби} Function d(x, y: double): double; BEGIN Arg(x, y); D := Max(x, y) / Max(x, -y) END; {Функция по заданию} Function f(x, y: double): double; BEGIN F := D(x, y) + D(x x, y y) END; {Вызывающая программа} Var a, b: double; BEGIN Write('a = '); Readln(a); Write('b = '); Readln(b); If Rt(a, b) And Rt(a a, b b) Then Write('f(a, b) = ', F(a, b)) Else Write('Функция не определена.'); Readln END.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д