Глава Числовые последовательности - часть 8
Фактическое значение в этом случае может выражаться числом 0.99999999... . Чтобы устранить неудобства, первоначальному значению k задано значение -1, а останов цикла выполняется после eps > 1.
Добавляя эту функцию в программу, легко использовать ее для вывода результата с требуемым числом десятичных знаков.
Тогда, две вышеприведенные программы могут быть построены так:
Program Problem2a;
uses WinCrt;
var
u : longint;
x, eps : real;
{----------------------------------------------------------------------------------------}
{ Функция вычисления порядка - кол-во знаков после запятой }
Function t(eps : real) : integer;
var
k : integer;
begin
k := -1;
repeat
eps := eps*10;
k := k + 1
until eps > 1;
t := k
end;
{---------------------------------------------------------------------------------------}
Procedure Square_root(eps, u : real; var x : real);
begin
x := (u + 1)/2;
repeat
x := (1/2)*(x + u/x)
until abs(x*x - u) <= eps
end;
{---------------------------------------------------------------------------------------}
begin
write('Введите подкоренное выражение '); readln(u);
write('Задайте точность вычисления '); readln(eps);
Square_root(eps, u, x);
writeln('Квадратный корень из ', u, ' равен ', x:6:t(eps));
writeln('С точностью до ', eps:1:t(eps))
end.
Program Problem2b;
uses WinCrt;
var
u : longint;
x, eps : real;
{----------------------------------------------------------------------------------------}
{ Функция вычисления порядка - кол-во знаков после запятой }
Function t(eps : real) : integer;
var
k : integer;
begin
k := -1;