2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 оператор "условие" в Delphi
Сообщение25.05.2010, 22:01 
(выше стоит цикл который меняет границы а и b,т.е этот цикл выполняется для 200 интервалов [a;b])


for r:=a to b do
begin
g:=g+cc[r];
midlfon:=midlfon+fon20[r];
end;

далее идет сравнение "g" c "midlfon" (>,<) для каждого интервала [a,b]

как мне сделать так чтоб следующий кусок программы выполнялся только в случае если для всех интервалов выполняется условие "g < midlfon" ?
и как, если ХОТЯ БЫ ОДИН РАЗ не выполняется, то другая чать проги выполняется???

 
 
 
 Re: оператор "условие" в Delphi
Сообщение25.05.2010, 22:11 
Заведите ещё одну Boolean переменную в которой сохраняйте выполнение условия:
Код:
    all_good := true;
    for all intervals
    begin
        for r:=a to b do
        begin
            g:=g+cc[r];
            midlfon:=midlfon+fon20[r];
        end;
        if g < midlfon then
            all_good := false;
    end;
    if all_good
        ...
    else
        ...;

 
 
 
 Re: оператор "условие" в Delphi
Сообщение25.05.2010, 22:19 
Вот спасибо огромное. И вправду всё очень легко... :-)

 
 
 
 Re: оператор "условие" в Delphi
Сообщение26.05.2010, 01:42 
Можно ещё вынести проверку условий в отдельную процедуру. Если условие в какой-то момент не выполнилось, то выполняем связанные действия и выходим из процедуры (exit). После того как цикл проверки условий отработает (т.е., выполнятся все условия и преждевременный выход не произойдет), можно сразу же за ним выполнять действия, предусмотренные на случай выполнения сразу все условий.

Видоимененный пример venco:
код: [ скачать ] [ спрятать ]
Используется синтаксис Pascal
procedure Check;
begin
    ...

   for ... {all intervals}
    begin

        for r:=a to b do
        begin
            g:=g+cc[r];
            midlfon:=midlfon+fon20[r];
        end;

        if g < midlfon then
        begin
            {A}

            exit;
        end;

    end;

    {B}
end;
 


Здесь на месте {A} должен быть код, срабатывающий если условие хотя-бы один раз не выполняется, а на месте {B} -- код, срабатывающий при выполнении всех условий.

Рузультат -- экономия флажка, т.е., одного бита. Негусто... :)

 
 
 [ Сообщений: 4 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group