Паскаль. Основы программирования


           

в этом случае может выражаться


Фактическое значение в этом случае может выражаться числом 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;

Содержание  Назад  Вперед