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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.12.2010, 18:00   #1
nick6161
 
Регистрация: 09.11.2010
Сообщений: 9
Вопрос Циклы итерационного типа


Мое неправильное решение
Код:
var  F,x,S,eps:real;
     n,fact:integer;
begin
write('vvedite x=');readln(x);
write('vvedite eps=');readln(eps);
F:=1;fact:=2; n:=1; S:=exp(2*n*ln(x))/fact;
while abs(S)>eps do
begin
F:=F+S;
n:=n+1;
fact:=fact*n*(n+1);
S:=exp(2*n*ln(x))/fact;
end;
write('pri x=',x:5:3, ' eps=',eps:5:3,' F=',F:10:3);
readln;
end.
Помогите пожалуйста

Последний раз редактировалось Stilet; 21.12.2010 в 18:56.
nick6161 вне форума Ответить с цитированием
Старый 21.12.2010, 18:21   #2
KEA0301
Пользователь
 
Регистрация: 20.12.2010
Сообщений: 28
По умолчанию

у тебя факториал не правильно считается, а лучше сделать примерно так:
...
Код:
F:=1; n:=1; S:=x*x/2;
while abs(S)>eps do
begin
F:=F+S;
n:=n+1;
S:=S*(x*x)/((2*n)*(2*n-1));
end;
...

Последний раз редактировалось Stilet; 21.12.2010 в 18:58.
KEA0301 вне форума Ответить с цитированием
Старый 21.12.2010, 18:36   #3
nick6161
 
Регистрация: 09.11.2010
Сообщений: 9
По умолчанию

KEA0301
Переписал программу, а все равно факториал считается неправильно
Код:
var F,x,S,eps:real;
n,fact:integer;
begin
write('vvedite x=');readln(x);
write('vvedite eps=');readln(eps);
F:=1; n:=1; S:=x*x/2;
while abs(S)>eps do
begin
F:=F+S;
n:=n+1;
S:=S*(x*x)/((2*n)*(2*n-1));
end;
write('pri x=',x:5:3, ' eps=',eps:5:3,' F=',F:10:3);
readln;
end.

Последний раз редактировалось Stilet; 21.12.2010 в 19:00.
nick6161 вне форума Ответить с цитированием
Старый 21.12.2010, 22:24   #4
KEA0301
Пользователь
 
Регистрация: 20.12.2010
Сообщений: 28
По умолчанию

А откуда такая уверенность?
KEA0301 вне форума Ответить с цитированием
Старый 21.12.2010, 23:32   #5
nick6161
 
Регистрация: 09.11.2010
Сообщений: 9
Вопрос

При вводе любого из условий сверху, F получается равным единице, вроде так не должно быть. Или я ошибаюсь?
nick6161 вне форума Ответить с цитированием
Старый 22.12.2010, 01:50   #6
KEA0301
Пользователь
 
Регистрация: 20.12.2010
Сообщений: 28
По умолчанию

Ну а ты подставь в неравенство первый же элемент, максимальная S это ((0,03*0,03)/2)=0,00045, и в итоге не одной итерации не выполнится и поэтому F=1.
KEA0301 вне форума Ответить с цитированием
Старый 22.12.2010, 02:02   #7
Prime123
Пользователь
 
Регистрация: 07.12.2010
Сообщений: 79
По умолчанию

Код:
var  
x,S,eps,a:real;
n:integer;
begin
write('vvedite x=');readln(x);
write('vvedite eps=');readln(eps);
a:=1; n:=1;s:=0;
while abs(S)>eps do
begin
s:=s+a;
n:=n+1;
a:=a*(x*x)/(2*n-1)*(2*n);
end;
write('pri x=',x:5:3, ' eps=',eps:5:3,' S=',s:10:3);
readln;
end.
Если я чем-то вам помог-не стесняйтесь,ставьте +

Если ошибаюсь-поправляйте,учусь на ошибках,реагирую адекватно
Prime123 вне форума Ответить с цитированием
Старый 22.12.2010, 13:50   #8
KEA0301
Пользователь
 
Регистрация: 20.12.2010
Сообщений: 28
По умолчанию

Prime123 у тебя цикл ни разу не выполнится, а A будет делится не на 2!, а на (3*4).
KEA0301 вне форума Ответить с цитированием
Старый 22.12.2010, 14:16   #9
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,527
По умолчанию

Код:
// F:=1; n:=1; S:=x*x/2;
F:=0; n:=0; s:=1;
while abs(s)>eps do
begin
  F:=F+s;
  n:=n+1;
  s:=s * ( (x*X) / ((2*n-1) *(2*n) ) );
end;
end;
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 22.12.2010, 17:57   #10
Prime123
Пользователь
 
Регистрация: 07.12.2010
Сообщений: 79
По умолчанию

Код:
var  
x,S,eps,a:real;
n:integer;
begin
write('vvedite x=');readln(x);
write('vvedite eps=');readln(eps);
a:=1; n:=1;s:=0;
while abs(a)>eps do//поменять s на a
begin
s:=s+a;
a:=a*(x*x)/(2*n-1)*(2*n);
n:=n+1;//Эти строки нужно было поменять местами
end;
write('pri x=',x:5:3, ' eps=',eps:5:3,' S=',s:10:3);
readln;
end.
Или вариант,предложенный выше
Вариантов изменить код правильно очень много
Необходимо стараться думать самостоятельно
Если я чем-то вам помог-не стесняйтесь,ставьте +

Если ошибаюсь-поправляйте,учусь на ошибках,реагирую адекватно

Последний раз редактировалось Prime123; 22.12.2010 в 18:04.
Prime123 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Циклы итерационного типа... AllPacino Помощь студентам 1 19.12.2010 18:22
Циклы итерационного типа vova6161 Помощь студентам 2 17.12.2010 06:06
Каким образом сохранить цвет. Типа в переменную типа TColor ? serres C++ Builder 5 07.12.2010 16:19
Помогите пожалуйста полную программу итерационного процесса! KnighTeX Помощь студентам 6 04.10.2009 17:24
Запись числа типа инт в ячейку двумерного массива типа char AxenicX Помощь студентам 1 25.09.2009 00:35