Var a,b:real;
begin
write(' введите параметры уравнения ax+b=0 a и b');
read(a,b);
if (a=0) and (b=0) then write('уравнение имеет бесконечно много решений ');
if (a=0) and (b<>0) then write('уравнение не имеет решений');
if (a<>0) then write(' уравнение имеет один корень', -b/a);
end.
Можно, например, так (метод деления пополам):
const eps=10E-10;
function func(x:real):real;
begin
func:=ln(x)-1/x;
end;
var a,b,h,x,f1,f2: real;
begin
a:=0; h:=0.1;
a:=a+h;
f2:=func(a);
repeat
f1:=f2;
a:=a+h;
f2:=func(a);
until f1*f2<0;
b:=a; a:=a-h;
writeln('a = ',a,' b = ',b);
x:=(a+b)/2;
while abs(func(x))>eps do
begin
if func(a)*func(x)<0 then b:=x
else a:=x;
x:=(a+b)/2;
end;
writeln('x = ',x);
end.
Результат:
a = 1.7000000000000004E+000 b = 1.8000000000000005E+000
x = 1.7632228344678880E+000
Надо подобрать степень двойки.
64=2⁶, поэтому требуется 6 бит.