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

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

Вернуться   Форум программистов > Delphi программирование > Lazarus, Free Pascal, CodeTyphon
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.04.2014, 14:52   #1
Ляйсан9517
Пользователь
 
Регистрация: 30.03.2014
Сообщений: 31
По умолчанию программа идет просто она не останавливается продолжает табулировать дальше, хотя должна изменятся х с 0,1 до 1

PHP код:
procedure TForm1.Button2Click(SenderTObject);
begin
  close

end
;

procedure TForm1.Button1Click(SenderTObject);
var
x,a,b,h,y,f,s,e:real;
n,k:integer;
begin
a
:=StrToFloat(Edit1.Text);
b:=StrToFloat(Edit2.Text);
h:=StrToFloat(Edit3.Text);
e:=StrToFloat(Edit4.Text);
n:=0;
k:=1;
s:=0;
x:=a;
Repeat
y
:=(1/2)*ln(x);
f:=(1/(2*n+1))*power((x-1)/(x+1),(2*n+1));
s:=s+f;
n:=n+1;
x:=x+h;
Memo1.Text:=FloatToStr(x);
Memo2.Text:=FloatToStr(y);
Memo3.Text:=FloatToStr(s);
until (x>b) and (f>e) ;
end
вот код программы
Условие:[IMG]file:///C:/Users/Lyaisan/Desktop/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%B A.PNG[/IMG]
Дело в том что программа идет просто она не останавливается продолжает табулировать дальше, хотя должна изменятся х с 0,1 до 1. Помогите пожалуйста, заранее спасибо
Ляйсан9517 вне форума Ответить с цитированием
Старый 15.04.2014, 14:54   #2
Ляйсан9517
Пользователь
 
Регистрация: 30.03.2014
Сообщений: 31
По умолчанию

Изображение не получается скинуть.
вот 7 вариант условие http://informatic.ugatu.ac.ru/lib/VB...4/tasks2_3.htm
Ляйсан9517 вне форума Ответить с цитированием
Старый 15.04.2014, 15:09   #3
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,602
По умолчанию

Если я правильно понял, то табулирование и поддсчет суммы ряда это все-таки разные вещи. А то у вас получается, что табулирование идет И подсчет идет. Разбейте их на разные циклы.

Чтобы прикрепить картинку, поставьте расширенный режим и выберите "управление вложениями".
Давать же ссылку на картинку, находящуюся на вашем компе, не самая лучшая идея.

Последний раз редактировалось ZX Spectrum-128; 15.04.2014 в 15:13.
ZX Spectrum-128 вне форума Ответить с цитированием
Старый 15.04.2014, 15:19   #4
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Проблема в том, что у Вас в цикле нигде не вычисляются значения b и e. Именно поэтому программа и зацикливается.
Если ввести в цикл подсчёт этих переменных, то всё становится на свои места.
Код:
Repeat
  y:=(1/2)*ln(x);
  f:=(1/(2*n+1))*power((x-1)/(x+1),(2*n+1));
  s:=s+f;
  n:=n+1;
  x:=x+h;
  e1:=abs(f-f1);
  x1:=x;
  f1:=f;
  Memo1.Text:=FloatToStr(x);
  Memo2.Text:=FloatToStr(y);
  Memo3.Text:=FloatToStr(s);
until (x<=b) and (e1>e) ;
Надеюсь, что идея понятна.

Последний раз редактировалось Streletz; 15.04.2014 в 15:55.
Streletz вне форума Ответить с цитированием
Старый 15.04.2014, 15:26   #5
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,602
По умолчанию

Разве b и e должны вычисляться? Они вводятся пользователем.
B - это ограничение цикла табулирования, а е - точность, с которой вычисляется сумма ряда.
?
Цикл табулирования идет от а до b и меняется x с шагом h.
Цикл вычисления суммы ряда идет по i с шагом 1 до достижения точности e. Это разные циклы.
???

Последний раз редактировалось ZX Spectrum-128; 15.04.2014 в 15:33.
ZX Spectrum-128 вне форума Ответить с цитированием
Старый 15.04.2014, 15:56   #6
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Цитата:
Сообщение от ZX Spectrum-128 Посмотреть сообщение
Разве b и e должны вычисляться? Они вводятся пользователем.
B - это ограничение цикла табулирования, а е - точность, с которой вычисляется сумма ряда.
?
Расхождение значений f должно быть меньше e. Поэтому вычисление текущего e (в исправленном варианте e1) необходимо.
Что касается b, то здесь, Вы, пожалуй правы. Поздно обратил внимание на ссылку с заданием.
Цитата:
Цикл вычисления суммы ряда идет по i с шагом 1 до достижения точности e.
Вычисление можно сделать и без i, если к этому есть объективные предпосылки. В частности, если внимательно прочитать задание, то реализовать это в 1 цикл, как ни странно, вполне возможно.
Streletz вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Assembler почти решила, не идет дальше Faceta Помощь студентам 5 01.06.2012 06:51
в чем причина? дальше не идет gabiboi Компьютерное железо 3 20.12.2011 00:12
SQL запрос. Не выводит строки, где в одном поле присутствует NULL, хотя идет проверка lyle_200490 SQL, базы данных 7 07.04.2011 22:41
Паскаль не видет ошибок, но не идет дальше ввода переменных( Koresh321 Паскаль, Turbo Pascal, PascalABC.NET 4 30.01.2011 09:35
для одной игрульки. но она дэмо и через 20мин останавливается oficeran Свободное общение 11 08.04.2009 01:47