program unlim_summ;
var
Sprev, Scur: real; {предыдущая и текущая суммы}
i: integer; {шаг суммирования}
epsilon: real; {к-т точности вычислений}
begin
writeln('Программа вычисляет бесконечную сумму элементов 1/i '+
'с заданной точностью');
{I - ввод}
write('Введите коэффициент точности вычислений эпсилон: ');
readln(epsilon);
if epsilon<0 then begin
writeln('Поскольку вы ввели отрицательный коэффициент, '+
'берем его по модулю');
epsilon := abs(epsilon);
end;
{II - расчет}
Sprev := 1; {i=1}
Scur := 1.5; {i=2; s=1+1/2}
i := 3; {next}
while (abs(Scur-Sprev)>epsilon) do begin
Sprev := Scur;
Scur := Scur+1/i;
i := i+1;
end;
{III - вывод}
writeln('Получившаяся сумма: ',Scur:8:3);
writeln('Последняя разность сумм: ',abs(Scur-Sprev):8:3);
writeln('Значение i на последнем шаге: ',i-1);
writeln('Нажмите [Enter] для завершения программы');
readln;
end.