P1=|ST-S1|
P2=|ST-S2|
P3=|ST-S3|
вывести: X,N,EPS, ST,
ST, S1, P1,
ST, S2, K2, P2
ST, S3, K3, P3
uses crt;
var x,e,e1,s1,s2,s3,st,p1,p2,p3,t:real;
n,i,k2,k3:integer;
begin
clrscr;
write('x=');
readln(x);
st:=sin(x);
{вычисляем N членов ряда}
write('Введите количество членов ряда n=');
readln(n);
s1:=x;{нулевое значение}
t:=x;
for i:=1 to n do
begin
t:=-t*x*x/(2*i*(2*i+1));{меняем знак, домножаем на x^2, делим на 2 следующих числа}
s1:=s1+t;{прибавляем}
end;
writeln('S1=',s1:0:6);
{задаем значение eps, порядок 0.0001-0.00000001}
repeat
write('Введите точность вычислений больше 0 и не более 0.1 e=');
readln(e);
until(e>0)and(e<=0.1);{нужно для проверки ввода, чтобы пользователь не ввел типа 10000}
{считаем сумму членов ряда больше eps}
s2:=x;
ch:=x;
zn:=1;
t:=x;
i:=1;
while abs(t)>=e do
begin
t:=-t*x*x/(2*i*(2*i+1));
s2:=s2+t;
inc(i);
end;
k2:=i;
{считаем сумму членов ряда больше eps/10}
e1:=e/10;
s3:=x;
t:=x;
i:=1;
while abs(t)>=e1 do
begin
t:=-t*x*x/(2*i*(2*i+1));
s3:=s3+t;
inc(i);
end;
k3:=i;
p1:=abs(st-s1);
p2:=abs(st-s2);
p3:=abs(st-s3);
writeln('X=',x:0:2,' EXP=',e:0:8,' ST=',st:0:8);
writeln('ST=',st:0:8,' S1=',s1:0:8,' N =',n:2,' P1=',p1:0:12);
writeln('ST=',st:0:8,' S2=',s2:0:8,' K2=',k2:2,' P2=',p2:0:12);
writeln('ST=',st:0:8,' S3=',s3:0:8,' K3=',k2:2,' P3=',p3:0:12);
readln
end.