Язык программирования Pascal. Процедуры и функции. Рекурсия. Васильев В.В - 14 стр.

UptoLike

14
4. Будем считать, что желаемая точность достигается , когда очередной член
ряда оказывается настолько маленьким, что его цифры , отличные от нуля ,
начинаются с позиции, имеющей номер превосходящей t+1. То есть для но-
вого члена ряда все i[k] (k = 0, 1, ..., t) равны нулю . Напишем функцию
end_(const i:vector):boolean, которая будет проверять малость”
очередного члена ряда. Функция возвращает значения истина” только когда
все i[k] (k = 0, 1, ..., t) равны нулю . В этом случае цикл, в ходе которого накап -
ливается сумма членов ряда и находится новый член ряда, прекращается .
5. Процедура print(const e:vector)выводит на экран элемент e[0] (целая
часть числа
e
). Затем выводится запятая и в цикле печатаются остальные
элементы массива e .
На стр. 13 представлена блок - схема основной программы и блок - схемы ,
вызываемых в основной программе процедур и функции. Обратите внимание
на новые элементы в оформлении блок-схем !
Program Epsilon;
Uses crt;
Const t=50;{количество знаков после запятой в числе е}
Type vector=array [0..t] of 0..9;
{тип массива для хранения t+1 цифр }
Var n:integer; {номер члена ряда }
e,i:vector;
{массивы для хранения цифр числа е и очередного члена ряда }
Procedure one (var a:vector);
{первоначальное заполнение массива}
var k:1..t;{параметр цикла}
begin
a[0]:=1; for k:=1 to t do a[k]:=0
end; {one}
Procedure add(var e,i:vector);{сложение двух больших чисел }
var v_ume:0..1{в_уме}; s:0..19{сумма двух цифр + в_уме};
k:0..t;{параметр цикла}
begin
v_ume:=0;
for k:=t downto 0 do
begin
s:=e[k]+i[k]+v_ume; e[k]:= s mod 10; v_ume:=s div 10
end;
end;{add}
Procedure division(var i:vector; n:integer);
{нахождение n-го члена ряда}
var r{остаток от деления}, k{параметр цикла},
a{делимое}:integer;
begin
r:=0;