Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 10.11.2011, 19:06   #1 (permalink)
Aizen_Stas
Member
 
Регистрация: 26.10.2011
Сообщений: 20
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Программирование итерационного цикла

Доброго времени суток! Уже несколько дней пытаюсь сделать данное задание,но увы ничего не получается. Тряс всех однокурсников никто внятно помочь не может. Проблема в несовпадающих значениях функции(y) и бесконечного ряда(S).

Вот задание. Задание.docx

program work77;
const n=1000;e=0.0001;
label met;
var x,y,s,xn,xk,dx,c,a:real;
i:integer;
begin
write('Введите xn,xk,dx=');
readln(xn,xk,dx);
x:=xn;
while x<=xk do
begin
y:=ln((1+x)/(1-x));s:=0;c:=1/x;
for i:=1 to n do
begin
c:=x*x*c;
a:=c/(2*i-1);
if abs(a)<e then goto met;
s:=2*(s+a);
end;
met:writeln('x=',x:3:1,' y=',y:8:5,' s=',s:8:5,' i=',i);
x:=x+dx;
end
end.

Результаты:
x=0.5 y=1.09861 s=16.72156 i=6
x=0.6 y=1.38629 s=81.98013 i=8
x=0.7 y=1.73460 s=392.90462 i=10
x=0.8 y=2.19722 s=7427.93213 i=14
x=0.9 y=2.94444 s=35689181.46681 i=26
Делал на Pascal ABC.
Aizen_Stas вне форума   Ответить с цитированием

Старый 10.11.2011, 19:06
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Чтобы не тратить время на поиски, отправлю вам сразу похожие обсуждения

Программирование в институте, что это?
Программирование
Операторы цикла
Операторы цикла 2
Программирование

Старый 14.11.2011, 11:35   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Если еще актуально.
Не знаю, что за придурки писали методичку, но из простейшей задачки сделано черт-те-что и сбоку бантик. Не мудрено, что у Вас проблемы с алгоритмом.
Теперь по Вашей программе. Настоятельно рекомендую: забудьте обо всех goto, метках и пр. - учитесь нормальному современному программированию.
Вот один из возможных вариантов кода:
Код:
const
 n=1000;
 e=0.0001;
 Xn=0.5;
 Xk=0.9;
 Dx=0.1;
var
 X,Y,S,a:real;
 i,j,Imax:integer;
BEGIN
 Imax:=ROUND((Xk-Xn)/Dx);
 For i:=0 to Imax do
  begin
   X:=Xn+Dx*i;
   Y:=Ln((1+X)/(1-X));
   j:=1;
   a:=X;
   S:=a*2;
   Repeat
    a:=a*(2*j-1);
    Inc(j);
    a:=a/(2*j-1)*SQR(X);
    S:=S+a*2;
   Until (Abs(Y-S)<e) or (j>n);
   writeln('x=',x:3:1,' y=',y:8:5,' s=',s:8:5,' i=',j);
  end;
 readln
END.
P.S. Написано, отлажено и оттестировано на Турбо Паскале (точнее - Free Pascal). За возможные проблемы и глюки с АВС не отвечаю.
Миниатюры
aaa01.jpg  
Vladimir_S вне форума   Ответить с цитированием
Старый 14.11.2011, 18:32   #3 (permalink)
Aizen_Stas
Member
 
Регистрация: 26.10.2011
Сообщений: 20
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Спасибо! Я уж совсем отчаялся...
Aizen_Stas вне форума   Ответить с цитированием
Старый 14.11.2011, 18:37   #4 (permalink)
Aizen_Stas
Member
 
Регистрация: 26.10.2011
Сообщений: 20
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Я по специальности инженер-биотехнолог,поэтому нас по информатике учат абы как
Aizen_Stas вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 18:19.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.