Цитата:
Сообщение от Kampuchiec
Выводит вот такую картину
|
Нет, не то.
Еще раз.
1. Уберите цикл по х, оставьте только х=1.
2. В цикле по n организуйте вывод указанных параметров.
3. Покажите текст программы.
К сожалению, СИ-транслятора у меня нет, поэтому я переписал Ваш код на Паскаль так, чтобы было максимально близко. Вот что получилось (стандартной функции Pow у меня нет, поэтому она введена вручную):
Код:
Uses CRT;
Var
s,fact,temp,eps,x,f:Real;
n:Integer;
function Pow(z:real; M:integer):Real;
Var i:integer;
Y:real;
Begin
if M=0 then Pow:=1 else
if M=1 then Pow:=z else
begin
Y:=z;
for i:=2 to M DO Y:=Y*z;
Pow:=Y;
end;
end;
Begin
ClrScr;
x:=1;
eps:=0.01;
temp:=1;
s:=1;
n:=1;
f:=exp(-x);
fact:=1;
while abs(temp)>eps do
begin
temp:=pow(-1,n)*(pow(x,n)/fact);
s:=s+temp;
writeln(' n = ',n,' temp = ',temp:11:8, ' s = ',s:11:8);
Inc(n);
fact:=fact*n;
end;
Readkey
End.
Вот что получилось у меня:
Видно, как s постепенно сходится к значению 1/е = 0.367879, что свидетельствует о правильности алгоритма. Вывод: Вы где-то накосячили с вводом программы. Поэтому и прошу выложить Ваш листинг.
Да, Вам еще следует перед циклом while добавить temp = 1.