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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 10.12.2012, 19:04   #1
romich.91
Пользователь
 
Регистрация: 11.05.2009
Сообщений: 14
По умолчанию Виснет программа.паскаль

Реализация золотого сечения. программа компилируется, но виснет. Думаю что проблема в goto. Посмотрите пожалуйста, может кто подскажет что не так сделал.
П.С. программа написана под конкретную задачу.
Код:
Program sechenie;
label m1;
const
D=0.5;
d1=0.15;
L=6;
eps= 0.001;
function f(l: double): double;

begin
  f := 0.5 * l * sqr((D-(D-d1)*l)/L)
end;

var
  a, b, l1, l2,l3: double;
  f_l1, f_l2,f_l3: double;
begin

  a := 0;
  b := 6;

  m1:

  l1 := b-L*0.618;
  l2 := a+L*0.618;

  f_l1 := f(l1);
  f_l2 := f(l2);

//   while(l > eps) do begin

     if f_l1 < f_l2 then begin
       a := l1;
      // l1 := b- L*0.618;
      // f_l2 := f_l1;
      // f_l1 := f(l1);
     end
     else begin

       b := l2;

      // l2 := a+L*0.618;
      // f_l1 := f_l2;
      // f_l2 := f(l2);
     end;
     if (b-a)<eps then begin

    l3:=(a+b)/2;
     f_l3:=f(l3);
      writeln('l = ', l3:4:3, ' V = ', f(l3):4:3);
      //goto m1
           end
     else begin  goto m1;
 //    l3:=(a+b)/2;
   // f_l=f(l3);
    end;
 //  writeln('l = ', l3:4:3, ' V = ', f(l3):4:3);

end.


___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 11.12.2012 в 09:38.
romich.91 вне форума
Старый 10.12.2012, 19:19   #2
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

Первое -
L и l - для дельфи одно и тоже, хотя по смыслу для тебя разные
Не стесняемся, плюсуем!
Slym вне форума
Старый 10.12.2012, 19:40   #3
romich.91
Пользователь
 
Регистрация: 11.05.2009
Сообщений: 14
По умолчанию

d1=0.15;
s=6;
eps= 0.001;
function f(l: double): double;

begin
f := 0.5 * l * sqr((D-(D-d1)*l)/s);

end;

var
a, b, l1, l2,l3: double;
f_l1, f_l2,f_l3: double;
begin

a := 0;
b := 6;

m1:

l1 := b-s*0.618;
l2 := a+s*0.618;

f_l1 := f(l1);
f_l2 := f(l2);

// while(l > eps) do begin

if f_l1 < f_l2 then begin
a := l1;
// l1 := b- L*0.618;
// f_l2 := f_l1;
// f_l1 := f(l1);
end
else begin

b := l2;

// l2 := a+L*0.618;
// f_l1 := f_l2;
// f_l2 := f(l2);
end;
if (b-a)<eps then begin

l3:=(a+b)/2;
f_l3:=f(l3);
writeln('l = ', l3:4:3, ' V = ', f(l3):4:3);
//goto m1
end
else begin goto m1;
// l3:=(a+b)/2;
// f_l=f(l3);
end;
// writeln('l = ', l3:4:3, ' V = ', f(l3):4:3);

end.


исправил. но эффект пока тот же.
romich.91 вне форума
Старый 10.12.2012, 20:26   #4
romich.91
Пользователь
 
Регистрация: 11.05.2009
Сообщений: 14
По умолчанию

спасибо. больше не актуально, разобрался сам.
romich.91 вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Виснет программа Mrsqler Работа с сетью в Delphi 32 10.07.2012 10:41
виснет программа LUXEOR C++ Builder 0 27.01.2012 23:20
Программа виснет на CreateWindowEx YourLastSong Win Api 8 12.01.2012 02:09
Виснет программа на Windows Form pro100saniok Помощь студентам 0 23.03.2011 12:08
Программа виснет при исполнении цикла Dima_D Общие вопросы Delphi 9 16.08.2010 23:45