uses crt;
function Fact(n:integer):real;
begin
if n<2 then Fact:=1
else Fact:=Fact(n-1)/n;//поскольку факториал в знаменателе сразу считаем обратный
end;
var n,k,z:integer;
e,s,t:real;
begin
clrscr;
{Сумма первых N членов}
write('n=');
readln(n);
s:=0;z:=-1;
for k:=0 to n do
begin
z:=-z;
s:=s+z*Fact(k)*Fact(k+1);
end;
writeln('Сумма первых(считая нулевой) ',n+1,' членов=',s:0:6);
{Сумма всех >= e}
repeat
write('Введите предел для вычисления очередного члена >0 e=');
readln(e);
until e>0;
if e>=1 then write('Сумма больших ',e:0:1,'=0')
else
begin
t:=1;
s:=1;
k:=0;
z:=1;
while abs(t)>=e do
begin
k:=k+1;
z:=-z;
t:=z*Fact(k)*Fact(k+1);
s:=s+t;
end;
writeln('Сумма первых членов не меньше ',e:0:6,'=',s:0:6);
end;
readln
end.