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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.12.2011, 20:51   #11
chertovich
Форумчанин
 
Аватар для chertovich
 
Регистрация: 26.07.2009
Сообщений: 489
По умолчанию

Надо использовать принцип разбиения кода на части, тогда будет проще написать и отладить код.
Если в глубине души вы программист, то, следуя своим наклонностям, вы захотите написать кусок кода.
chertovich вне форума Ответить с цитированием
Старый 06.12.2011, 21:11   #12
googl
Форумчанин
 
Регистрация: 05.06.2010
Сообщений: 154
По умолчанию

Цитата:
Сообщение от chertovich Посмотреть сообщение
Надо использовать принцип разбиения кода на части, тогда будет проще написать и отладить код.
там метод сложный
googl вне форума Ответить с цитированием
Старый 06.12.2011, 21:12   #13
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Наверное здесь
Код:
  ls:=0.5*(Abt/Arm)*ds;
  if 10*ds>10 then
    lsmin:=10
  else
    ls:=10*ds;
  if 40*ds>40 then
    lsmax:=40
  else
    lsmax:=40*ds;
  if ls<lsmin then ls:=lsmin;
  if ls>lsmax then ls:=lsmax;
Найдено форматированием кода
Код:
    ls:=0.5*(Abt/Arm)*ds;
    if 10*ds>10 then
    lsmin:=10
    else ls:=10*ds;
    if 40*ds>40 then
    lsmax:=40
    else lsmax:=40*ds;
    if ls<lsmin then
    ls:=lsmin;
    if ls>lsmax then
    ls:=lsmax;
исправленный код
Код:
ls:=0.5*(Abt/Arm)*ds;
lsmin:=min(10, 10*ds);
lsmax:=max(40, 40*ds);
if ls<lsmin then ls:=lsmin;
if ls>lsmax then ls:=lsmax;
к коду надо будет добавить
Код:
uses   math;
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 06.12.2011, 21:15   #14
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
там метод сложный
в течении 6-ти лет мне это удавалось.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 06.12.2011, 22:19   #15
3D Hunter
Сумрачная тень
Форумчанин
 
Аватар для 3D Hunter
 
Регистрация: 05.03.2009
Сообщений: 689
По умолчанию

застрелиться))) смотрю на этот код и понимаю что я еще потенциально хороший программист)))

по теме: метки лучше не использовать, очень много операий, скорее всего, это подвергается оптимизации.
"ковыряю изнутри" (с)
3D Hunter вне форума Ответить с цитированием
Старый 07.12.2011, 00:49   #16
googl
Форумчанин
 
Регистрация: 05.06.2010
Сообщений: 154
По умолчанию

ну блин я не знаю как этот метод организовать проще. точнее нет времени. просто попросили помочь.
googl вне форума Ответить с цитированием
Старый 07.12.2011, 08:04   #17
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию УЖАС... первый модуль

Код:
type
  TBeton=record
    RbSer,RbtSer,Rb,Rbt,Ebt:real;
  end;
  TArm=record
    RsSer,Rs,Rsc,Rsw:integer;
  end;
const
  BetonClass:array[0..6] of TBeton=(
    (RbSer:7.5; RbtSer:0.85;  Rb:6;   Rbt:0.56; Ebt:19000),
    (RbSer:11;  RbtSer:1.1;   Rb:8.5; Rbt:0.75; Ebt:24000),
    (RbSer:15;  RbtSer:1.35;  Rb:11.5;Rbt:0.9;  Ebt:27500),
    (RbSer:18.5;RbtSer:1.55;  Rb:14.5;Rbt:1.05; Ebt:30000),
    (RbSer:22;  RbtSer:1.75;  Rb:17;  Rbt:1.15; Ebt:32500),
    (RbSer:25.5;RbtSer:1.95;  Rb:19.5;Rbt:1.3;  Ebt:34500),
    (RbSer:29;  RbtSer:2.1;   Rb:22;  Rbt:1.4;  Ebt:36000));
  ArmClass:array[0..2] of TArm=(
    (RsSer:240; Rs:215; Rsc:215; Rsw:170),
    (RsSer:300; Rs:270; Rsc:270; Rsw:215),
    (RsSer:400; Rs:355; Rsc:355; Rsw:285));


procedure TForm1.classbetcmbChange(Sender: TObject);
var i:integer;
begin
  i:=classbetcmb.ItemIndex;
  rbsert.Text:=FloatToStr(BetonClass[i].RbSer);
  rbtsert.Text:=FloatToStr(BetonClass[i].RbtSer);
  rbt.Text:=FloatToStr(BetonClass[i].Rb);
  rbtt.Text:=FloatToStr(BetonClass[i].Rbt);
  ebt.Text:=FloatToStr(BetonClass[i].Ebt);
end;

procedure TForm1.classarmcmbChange(Sender: TObject);
var i:integer;
begin
  i:=classarmcmb.ItemIndex;
  rssert.Text:=IntToStr(ArmClass[i].RsSer);
  rst.Text:=IntToStr(ArmClass[i].Rs);
  rsct.Text:=IntToStr(ArmClass[i].Rsc);
  rswt.Text:=IntToStr(ArmClass[i].Rsw);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  pagecontrol1.ActivePageIndex:=0;
  classbetcmb.OnChange(classbetcmb);
  classarmcmb.OnChange(classarmcmb);
end;

procedure TForm1.raschetClick(Sender: TObject);
var kofprob:integer;
begin
  bmin:=strtofloat(bmint.Text);
  bmax:=strtofloat(bmaxt.Text);
  hmin:=strtofloat(hmint.Text);
  hmax:=strtofloat(hmaxt.Text);
  asmin:=strtofloat(asmint.Text);
  asmax:=strtofloat(asmaxt.Text);

  kofprob:=0;
  while kofprob<10 do
  begin
    r:=((trunc(random*10000))/10000);
    bbaz:=bmin+r*(bmax-bmin);
    r:=((trunc(random*10000))/10000);
    hbaz:=hmin+ r*(hmax-hmin);
    r:=((trunc(random*10000))/10000);
    asbaz:=asmin+r*(asmax-asmin);
    if ogran(bbaz,hbaz,asbaz) then break;
    inc(kofprob);
  end;
  if kofprob<10 then
  begin
    cf:=celfunc(bbaz,hbaz,asbaz);
    metod1(bbaz,hbaz,asbaz,cf);
  end else
    showmessage('Не могу найти пробную точку! Пожалуйста, измените параметры или попробуйте выполнить расчет еще раз!');
end;
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Старый 07.12.2011, 14:38   #18
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию 3 километра длиной

я уложил metod1 в 150 строк
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Старый 08.12.2011, 18:37   #19
googl
Форумчанин
 
Регистрация: 05.06.2010
Сообщений: 154
По умолчанию

Цитата:
Сообщение от Slym Посмотреть сообщение
я уложил metod1 в 150 строк
Это блок ограничений. ты организуй метод, который в юниет metod находится) Мы про него говорили.
googl вне форума Ответить с цитированием
Старый 08.12.2011, 23:36   #20
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
Сообщение от googl Посмотреть сообщение
Это блок ограничений. ты организуй метод, который в юниет metod находится) Мы про него говорили.
Цитата:
Код:
unit metod;

interface
 procedure metod1(bbaz,hbaz,asbaz,cfbaz: real);
Цитата:
я уложил metod1 в 150 строк
только цитаты.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 08.12.2011 в 23:39.
evg_m вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Зависание окна MasterSporta Win Api 2 12.04.2011 22:51
Зависание компьютера RockForr Компьютерное железо 10 19.08.2010 11:46
зависание DeDoK Работа с сетью в Delphi 7 17.08.2010 09:56
Непонятное зависание. DIMANJ Операционные системы общие вопросы 20 18.11.2009 17:08
Зависание JRcoker Общие вопросы Delphi 8 06.08.2008 08:29