IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Циклы в уравнениях, вычисления
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 23
Пол: Мужской

Репутация: -  0  +


Здравствуйте 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 -


Эскизы прикрепленных изображений
Прикрепленное изображение
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Домовой, все гораздо проще: ты должен был прежде, чем начинать решать эту задачу, выделить общий член последовательности... И тогда решение пришло бы само:
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.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 23
Пол: Мужской

Репутация: -  0  +


volvo, Спасибо большое smile.gif
Мдя... "все гениальное - просто" ))
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 3.05.2024 11:02
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name