Вот все пытаюсь решить следующую задачу:
Не используя стандартные функции (за исключением ABS), вычислить с точностью e>0
e - это эбсилант.
Считать, что заданная точность достигнута, если: очередное слагаемое по модулю меньше e.
Само уравнение прикрепляю в картинке.
Суть такова:
человек с клавиатуры вводит e и x (2 переменные)
и скриптина начинает считать по формуле, каждый раз прибавляя к n+1
и потом по вышесказанным условиям выводит общий ответ.
Ну хоть убейте, ну сидел над этой задачей 4 часа...
У меня получается, либо зацикливание, либо всегда один и тот же ответ...
либо вообще охинея какая-то, вы уж извините
Прошу вас помочь мне, пропадаю ))
Вот мой код:
program uau;
var e,x,m,all: real;
n: integer;
begin
n:=1;
m:=0;
all:=0;
write('‚ўҐ¤ЁвҐ e Ё x: ');
readln(e, x);
repeat
m:=exp((n-1)*(ln(1)*(-1)))*(exp(n*ln(x))/2);
all:=all+m;
n:=n+1;
until m=e;
writeln('ЋвўҐв: ', all:2:2);
end.
а вот другая проба:
program eps;
var x,e,n,c,ur,modul: real;
lev: integer;
begin
write('‚Ґ¤ЁвҐ e (нЎбЁ« в): ');
readln(e);
write('‚ўҐ¤ЁвҐ x: ');
readln(x);
c:=abs(x);
n:=0;
lev:=1;
ur:=0;
if (c<=0) or (c>=1) then
writeln('Ћ�€ЃЉЂ: вॡгҐвбп, зв®Ўл |x|>0 Ё |x|<1')
else
begin
while modul<e do
begin
n:=exp((lev-1)*(ln(1)*(-1)))*(exp(lev*ln(x))/2);
ur:=ur+n;
lev:=lev+1;
modul:=abs(n);
writeln('n - ',n, ' ur - ' ,ur, ' lev - ' ,lev)
end;
writeln(ur:2:2)
end;
writeln;
writeln;
end.
Прошу помочь.
Спасибо.