Помощь - Поиск - Пользователи - Календарь
Полная версия: Циклы в уравнениях
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Домовой
Здравствуйте smile.gif
Вот все пытаюсь решить следующую задачу:
Не используя стандартные функции (за исключением ABS), вычислить с точностью e>0
e - это эбсилант.
Считать, что заданная точность достигнута, если: очередное слагаемое по модулю меньше e.
Само уравнение прикрепляю в картинке.
Суть такова:
человек с клавиатуры вводит e и x (2 переменные)
и скриптина начинает считать по формуле, каждый раз прибавляя к n+1
и потом по вышесказанным условиям выводит общий ответ.
Ну хоть убейте, ну сидел над этой задачей 4 часа...
У меня получается, либо зацикливание, либо всегда один и тот же ответ...
либо вообще охинея какая-то, вы уж извините smile.gif
Прошу вас помочь мне, пропадаю smile.gif))
Вот мой код:

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.


Прошу помочь.
Спасибо.
volvo
Домовой, все гораздо проще: ты должен был прежде, чем начинать решать эту задачу, выделить общий член последовательности... И тогда решение пришло бы само:
var
x, eps, next, s: real;
n, sign: integer;

begin
write('X = '); readln(X);
write('Eps = '); readln(eps);

next := 1; s := 0;
n := 1; sign := 1;
repeat
next := next*x;
s := s + sign * next / n;
n := n + 1; sign := - sign;
until (next / n) < eps;
writeln('S = ', s:10:5);
end.
Домовой
volvo, Спасибо большое smile.gif
Мдя... "все гениальное - просто" ))
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.