Правильно подобный ряд начинать вычислять с меньших по величине членов - так будет выше точность.
// PascalABC.NET 3.3, сборка 1599 от 17.12.2017 // Внимание! Если программа не работает, обновите версию!
begin var (s,i):=(0.0,1000); repeat s+=1/i; i-=1; until i=0; Writeln(s) end.
Результат 7.48547086055034
Во вложении приведено решение этой же задачи с точностью 20 цифр в пакете компьютерной математики Maple15. Видно,что все цифры, полученные программой, точны.
// PascalABC.NET 3.3, сборка 1599 от 17.12.2017
// Внимание! Если программа не работает, обновите версию!
begin
var (s,i):=(0.0,1000);
repeat
s+=1/i;
i-=1;
until i=0;
Writeln(s)
end.
Результат
7.48547086055034
Во вложении приведено решение этой же задачи с точностью 20 цифр в пакете компьютерной математики Maple15. Видно,что все цифры, полученные программой, точны.
Var S:real;
N:integer;
Begin
S:=0;N:=0;
repeat
N:=n+1;
S:=s+1/n
Until n>1000;
Writeln(s);
Readln
End.