Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.10.2012, 23:07   #1
HailMe
Пользователь
 
Регистрация: 07.10.2012
Сообщений: 13
По умолчанию Вычислить сумму с точностью до e (Pascal)

Здравствуйте. Помогите с задачкой, пожалуйста: необходимо вычислить сумму с точностью до е


Считать, что требуемая точность достигнута, если очередное слагаемое оказалось по модулю меньше, чем е - это и все последующие слагаемые можно уже не учитывать.
Заранее спасибо
Изображения
Тип файла: gif image021.gif (518 байт, 101 просмотров)
HailMe вне форума Ответить с цитированием
Старый 07.10.2012, 23:42   #2
gaw4
Форумчанин
 
Регистрация: 31.05.2010
Сообщений: 407
По умолчанию

http://www.programmersforum.ru/showthread.php?t=213571
icq 584 308 611
gaw4 вне форума Ответить с цитированием
Старый 08.10.2012, 11:50   #3
HailMe
Пользователь
 
Регистрация: 07.10.2012
Сообщений: 13
По умолчанию

Спасибо, но у меня вот проблема с факториалом, как его непосредственно влепить в цикл? Пытался через функцию, программа выполняется, но не правильно:

Код HTML:
var k,i,n:integer;
    Sum,S,e,x,f:real;
    function Fac(k:integer):longint;
var i,f:longint;
begin
f:=1;
for i:=1 to n do
if odd(i) then f:=2*f*i;
Fac:=f;
end;
begin
k:=0; Sum:=0; S:=1;f:=1; readln (e); readln (x);
while abs(S)>e do
  begin
   s:=power(-1,k)*power(x,4*k+1)/Fac(k)*(4*k+1);
 sum:=sum+s;
 k:=k+1;
 end;
 writeln (sum);
 end.

Последний раз редактировалось HailMe; 08.10.2012 в 11:55.
HailMe вне форума Ответить с цитированием
Старый 08.10.2012, 12:12   #4
gaw4
Форумчанин
 
Регистрация: 31.05.2010
Сообщений: 407
По умолчанию

мб так
Код:
var k:integer;
    Sum,S,e,x:real;
    
function Fac(n:integer):real; //longint;
var i:integer;
begin
result:=1;
for i:=1 to n do
 result:=result*i;
end;

begin
k:=0; Sum:=0;
writeln('eps='); readln (e);writeln('x='); readln (x);
repeat
   s:=power(-1,k)*power(x,4*k+1)/(Fac(2*k)*(4*k+1));
     sum:=sum+s;
       inc(k);
 until  abs(s)<e ;
 writeln (sum);
 end.
icq 584 308 611
gaw4 вне форума Ответить с цитированием
Старый 08.10.2012, 12:20   #5
HailMe
Пользователь
 
Регистрация: 07.10.2012
Сообщений: 13
По умолчанию

Больше похоже на правду, но если считать вручную, то при епсилуме 0.1 и х 1, должно выходить 1, а тут 0.9. Ну или я криво считаю))

Последний раз редактировалось HailMe; 08.10.2012 в 12:22.
HailMe вне форума Ответить с цитированием
Старый 08.10.2012, 12:22   #6
HailMe
Пользователь
 
Регистрация: 07.10.2012
Сообщений: 13
По умолчанию

Сменил repeat, на while, вышло как раз так, как считал вручную. Спасибо за помощь
HailMe вне форума Ответить с цитированием
Старый 08.10.2012, 15:24   #7
HailMe
Пользователь
 
Регистрация: 07.10.2012
Сообщений: 13
По умолчанию

А не, надо оставлять reapeat.

Последний раз редактировалось HailMe; 08.10.2012 в 15:28.
HailMe вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Pascal ABC. Вычислить сумму ряда с заданной точностью. 0kcanka Помощь студентам 0 16.05.2011 13:22
Вычислить сумму S с заданной точностью Е marka Помощь студентам 1 12.01.2011 07:44
вычислить сумму ряда с точностью Е Giver Помощь студентам 2 18.12.2010 20:04
Pascal. Вычислить сумму S с заданной точностью E Саша Сказка Помощь студентам 8 19.10.2010 14:34