Вычислить сумму выражения - Pascal ABC

Формулировка задачи:

Здравствуйте. Решаю такую задачу: дано натуральное число n. Вычислить
sum:real;
p,k,i,f,n,st:integer;
begin
     writeln('Ввести n');
     readln(n);
     k:=1;
     sum:=0;
     p:=1;
     f:=1;
     while k<=n do
     begin
           f:=f*k;
           for i:=0 to k do
                begin
                  p:=p*(i+2);
                end;
                st:=(n-k)+1;
     sum:=sum+(f+power(k,st))/(7*k*sqrt(k)+p);
     writeln('sum=',sum,' k=',k);
     k:=k+1;
     p:=1;
     end;
end.
Программу написал, только в ней есть где-то ошибка. если n=1 или 2 то программа работает хорошо, если значение переваливает за 3, то в вычисления не сходятся с вычислениям при n=2, то есть первая "сумма" считается правильно, а вторая нет. n=2
sum=0.153846153846154 k=1
sum=0.245172460949994 k=2
n=3
sum=0.153846153846154 k=1
sum=0.290835614501915 k=2
sum=0.348390282802709 k=3
В чем может быть причина?

Код к задаче: «Вычислить сумму выражения - Pascal ABC»

textual
var sum,p,f:real;
    k,i,n:integer;
begin
writeln('Ввести n');
readln(n);
sum:=0;
f:=1;
for k:=1 to n do
 begin
  f:=f*k;
  p:=1;
  for i:=0 to k do
  p:=p*(i+2);
  sum:=sum+(f+power(k,n-k+1))/(7*k*sqrt(k)+p);
  writeln('sum=',sum,' k=',k);
 end;
end.
Эта работа вам не подошла?

Вы всегда можете заказать любую учебную работу у наших авторов от 20 руб.

9   голосов, оценка 4.222 из 5


СДЕЛАЙТЕ РЕПОСТ