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

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

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

> Циклы в уравнениях, вычисления
Домовой
сообщение 15.12.2005 23:28
Сообщение #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 - 6.11.2006 21:15


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

Сообщений в этой теме


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

 



- Текстовая версия 19.07.2025 14:58
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"