program MaxFunc;
var
a, b, c, d, e, x1, x2, y, Max, int:Real;
procedure Recurs(a, b, c, d, e, x2:Real; var x1, int, y, Max:Real);
var
y2, x_int:Real;
begin
If x1>=x2 then
begin
exit;
end;
x_int:=x1+int;
y2:=(a*x_int*x_int+b*x_int+c)/(d*x_int)+e;
If Abs(y2-y)>0.01 then
begin
int:=int/2;
Recurs(a, b, c, d, e, x1, x2, int, y, Max);
end
else
begin
If y2>Max then
Max:=y2;
x1:=x1+int;
Recurs(a, b, c, d, e, x1, x2, int, y2, Max);
end;
end;
begin
Write('Enter a:');
Readln(a);
Write('Enter b:');
Readln(b);
Write('Enter c:');
Readln(c);
Write('Enter d:');
Readln(d);
Write('Enter e:');
Readln(e);
Write('Enter x1:');
Readln(x1);
Write('Enter x2:');
Readln(x2);
y:=(a*x1*x1+b*x1+c)/(d*x1)+e;
Max:=y;
int:=(x2-x1)/2;
Recurs(a, b, c, d, e, x2, x1, int, y, Max);
Writeln('Result=', Max);
Writeln('Press "Enter" to exit');
Readln;
end.