Цитата:
Сообщение от akkelas3
программу написал,а в значение синуса не попасть,не могу найти ошибку
|
Ошибки две: первая - Вы обозначили одной буквой (а) как аргумент функции, так и текущее слагаемое, вторая - Вы неправильно вычисляете знаменатель.
Цитата:
Сообщение от akkelas3
a*=-1*pow(a,2)/(2*pow(n,2)+5*n+2);
|
Для того, чтобы из слагаемого с (n-1) получить слагаемое с (n), нужно:
1. Изменить знак (сделано).
2. Домножить на квадрат аргумента (ошибка: вместо аргумента
π/3 подставляется предыдущее слагаемое).
3. Поделить на 2n*(2n+1) = 4n² + 2n (полная ахинея).
Исправьте, и будет Вам счастье.
К сожалению, я на СИ не пишу, да и транслятора нету, поэтому я переписал Вашу программу на Паскаль, исправил ошибки и оттестировал:
Код:
Const
EPS=1e-4;
Var
a,s,si,x:Real;
n:Integer;
Begin
n:=0;
x:=Pi/3;
si:=sin(x);
a:=x;
s:=a;
while (abs(a)>EPS) do
begin
Inc(n);
a:=a*(-1)*Sqr(x)/(4*Sqr(n)+2*n);
s:=s+a;
end;
writeln('s = ',s:0:7,' sin(p/3) =',si:0:7);
readln
End.
Обратите внимание на отсутствующую у Вас переменную "х" - она строго обязательна!