Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


Ответ
 
Опции темы
Старый 15.04.2014, 14:52   #1
Ляйсан9517
Пользователь
 
Регистрация: 30.03.2014
Сообщений: 31
Репутация: 10
По умолчанию программа идет просто она не останавливается продолжает табулировать дальше, хотя должна изменятся х с 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
Репутация: 10
По умолчанию

Изображение не получается скинуть.
вот 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
Репутация: 366
По умолчанию

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

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

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

Проблема в том, что у Вас в цикле нигде не вычисляются значения 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) ;

Надеюсь, что идея понятна.
__________________
Мой скромный Web-сайт
Фриланс проекты не принимаю.

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

Разве 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,584
Репутация: 1059
По умолчанию

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

Опции темы

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

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

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
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 Паскаль 4 30.01.2011 10:35
для одной игрульки. но она дэмо и через 20мин останавливается oficeran Свободное общение 11 08.04.2009 01:47


07:00.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru