Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [Численные методы] Выход из бесконечного цикла


Автор: qyzt 22.10.2007, 11:10
Здравствуйте
Посмотрите вот такой интересный код
Код

  s := 1; i := 1;
  repeat
    s := s/2;
    inc(i);
    writeln( i:2,' ',s,' ',(N+s));
  until (1+s) = 1;


Я понимаю что выход идёт из-за потери манитсы т.к. большя разность порядков, но я вот чего никак не пойму почему этот выход не происходит раньше. Ведь на последних шагах ужё идут еденицы...

Автор: kali 23.10.2007, 09:22
Выход из цикла происходит, когда значение s сравнивается с компьютерной точностью.

Обычно в таких случаях задают необходимую погрешность

Код

const e=1E-20;

...

repeat
...
until Abs(s) < e;
 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)