По данным значениям аргументов a и b вычислить значение функции - Pascal (81158)

Узнай цену своей работы

Формулировка задачи:

По данным значениям аргументов a и b вычислить значение функции f(a, b). При организации вычисления необходимо выявить сходные по своей схеме последовательности операций, различающихся лишь операндами, и представить их в виде отдельных функций. Аргументы должны принадлежать области определения функции:

Решение задачи: «По данным значениям аргументов a и b вычислить значение функции»

textual
Листинг программы
{функция определения максимума от 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.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.778 из 5
Похожие ответы