Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Помогите плиз [D7, XP]


Генрих ©   (2007-01-18 10:47:00) 

Всем привет ! Помогите разобраться в программе.

     x:= p_s/(Sum-perVznos);
     a:=-1.5;

      repeat
        a:= a+ 0.00001;
        z:= 12*(a-1)/(1-Power(a,-12))-1 - x ;

        if (z>=-0.0005) and (z<=0.0005) then
           begin
             // Считаем эффективную ставку
             APR:= (a-1)* 1200;
             exit;
           end;

      until a=0;

     ShowMessage('Готово');

Тут вот какое дело, ShowMessage('Готово');не срабатывает. Как сделать так, чтобы после того как сработает APR:= (a-1)* 1200;
цикл должен закончить работу. Если поместить ShowMessage сразу после APR:= (a-1)* 1200; тогда работет. Что делать, помогите плиз.


Alx2   (2007-01-18 21:19:00) [1]

>Генрих   (18.01.07 10:47)  

Корни уравнения искать последовательным равномерным перебором - крайне неэффективно.


Ega23   (2007-01-18 12:01:00) [2]


> У апельсинов хоть эфирное масло в кожуре. А какое топлипо
> из яблок?


Из конских яблок - отличное топливо. Если высушить.


Плохиш   (2007-01-18 11:47:00) [3]


> ЮЮ ©   (18.01.07 11:34) [10]

Яблочное вино видел, апельсинового - нет ;-)


ЮЮ   (2007-01-18 11:34:00) [4]


>
> Точно, яблоки - рулез, апельсины - в топку...


У апельсинов хоть эфирное масло в кожуре. А какое топлипо из яблок?


Плохиш   (2007-01-18 11:27:00) [5]


> Генрих   (18.01.07 11:04) [6]
> Опа, всё получилось. (Break) Exit - в топку.

Точно, яблоки - рулез, апельсины - в топку...


Elen   (2007-01-18 11:15:00) [6]


> Нет, туда нельзя.

Why?


icWasya   (2007-01-18 11:11:00) [7]

Вот это место
until a=0;
никогда не сработает

если вычислить   -1.5 + 0.00001 * 150000даже с точностью Extended, то получится 2.22044604925031296E-16, а никак ни ноль.
Поставь условие выхода из цикла либо
until a>=0;
либо
until a>=0.000005;


Генрих   (2007-01-18 11:04:00) [8]

Опа, всё получилось. (Break) Exit - в топку.


Генрих   (2007-01-18 11:02:00) [9]


> Так почуму бы не поместить его туда?


Нет, туда нельзя.


> Для этого существует оператор Break.


Пробывал. Не срабатывает. По любому сообщение не выходит.


Elen   (2007-01-18 10:57:00) [10]


>  Если поместить ShowMessage сразу после APR:= (a-1)* 1200;
>  тогда работет

Так почуму бы не поместить его туда? (и подумать о правильном выходе из цикла, ато этот вроде некошерный кокой-то)


ЮЮ   (2007-01-18 10:57:00) [11]

1) вместо exit (выход из процедуры) постовить break (выход из цикла)
2)
 try

 finally
    ShowMessage('Готово');
 end;

сработает и по exit и при AV :)


Сергей М.   (2007-01-18 10:55:00) [12]


> цикл должен закончить работу


Для этого существует оператор Break.
А Exit завершает текущую процедуру, а не текущий цикл.


Плохиш   (2007-01-18 10:54:00) [13]

Надо, для начала, открыть справку для слова exitи внимательно, очень внимательно, прочитать для чего же оно в действительности преднозначено.


Наверх

Титульная страница Поиск, карта сайта Написать письмо