Boa noite/dia gente. Preciso de ajuda aqui. Tenho um exercício no qual tenho de fazer um programa em pascal com o seguinte enunciado:
Considere a soma S dos termo da série infinita apresentada abaixo:
Fazer um programa em Free Pascal que calcule o valor aproximado da soma S dos termos da série até o momento em que a diferença das normas (módulo) de 2 termos consecutivos for menor que 0,000001 ({i.e.}, norma da diferença das normas de dois termos consecutivos).
Segue meu algoritmos/programa:
program calcserie;
var
soma, a1, a2, an : real;
sinal : longint;
cont, n, fat : integer;
begin
n := 0;
a1 := 1;
a2 := 0;
soma := 0;
cont := 1;
fat := 1;
an := 1;
sinal := 1;
while (an) > 0.000001 do
begin
n := n + 2;
while cont <= n do
begin
fat := fat * cont;
cont := cont + 1;
end;
soma := (soma + (a1 * sinal));
sinal := sinal * -1;
a2 := a1;
a1 := ((1/fat));
if (a2 < 0) then
an := (a2 * -1) - a1
else if (a1 < 0) then
an := (a2) - (a1 * -1);
end;
write (soma:0:15);
end.
Meu erro está sendo a partir da 3 casa decimal