Возможно ли избегнуть много "или" (||) в условиях, вызывающих одно и то же действие? - страница 5

 
borilunad:


А это я не понимаю, что Вы имеете ввиду. Откуда взяли эти числа? А если интересуетесь короткими названиями переменных, так я предпочитаю короткие длинным. Или что ещё? Да, только заметил, что Вы добавили в мою формулку две скобки перед clo и в конце после clo. Это совсем не нужно, нарушает расчёт. Но всё равно от всей души Вам признателен!

<---   10,444 = 8,087 > 3,908 эт на каком языке? 


double a;<------------ это число

(isCloseLastPosByTake() == True && Profit > ProClo / clo - GetProfitCloseLastPosByTake() * clo); <--------это сравнение членов

а = (isCloseLastPosByTake() == True && Profit > ProClo / clo - GetProfitCloseLastPosByTake() * clo); 

число = число > число  это как понимать??

 
pako:


double a;<------------ это число

(isCloseLastPosByTake() == True && Profit > ProClo / clo - GetProfitCloseLastPosByTake() * clo); <--------это сравнение членов

а = (isCloseLastPosByTake() == True && Profit > ProClo / clo - GetProfitCloseLastPosByTake() * clo); 

число = число > число 

А я уже сделал с bool'ем, как Вы мне посоветовали:

bool a = false;

if(isCloseLastPosByTake() == True && Profit > ProClo / clo - GetProfitCloseLastPosByTake() * clo) a = true;


//Кстати, isCloseLastPosByTake() это член, а GetProfitCloseLastPosByTake() это число

И работает, о чём Вам уже сообщил на предыдущей странице! Спасибо!
 
borilunad:
Как я понимаю, у Вас вариант для выполнения всех условий, а у меня достаточно выполнения только одного условия, да если и выполнятся больше, что вряд ли, уж очень они разные, то до этого уже не дойдёт, т.к. сработает одно условие. Если я не правильно понял, обоснуйте! Я всегда рад всему новому! Спасибо!

Нет, не понимаете.

При любом условии (A, B, C, D) = true, Request будет true.

Если все =false, Request будет false.

 
icas:

Нет, не понимаете.

При любом условии (A, B, C, D) = true, Request будет true.

Если все =false, Request будет false.

Попробую и это! Если даст положительный результат в скорости, выберу Ваше. Спасибо!

Попробовал, функцию Request(), поставив вне старта, но компилятор мне даёт предупреждение:

'Request' - no dll defined for the imported function C:\Program Files\

Всё, сейчас работает, но думаю, что вариант от Раkо лучше, т.к. не нужно вводить дополнительную функцию Request(). Спасибо! 

 
Request()  return() имелось ввиду
 
pako:
Request()  return() имелось ввиду
Спасибо, но это я попробовал вариант icas'а и ошибка моя, поставив ; после Request(), сейчас работает, но думаю, что Ваш вариант лучше, как уже Вам сообщил ранее. Спасибо!
 
borilunad:
Спасибо, но это я попробовал вариант icas'а и ошибка моя, поставив ; после Request(), сейчас работает, но думаю, что Ваш вариант лучше, как уже Вам сообщил ранее. Спасибо!

В варианте

 if((A + B + C + D + E) > 0) Action;

необходимо всегда определять все условия A, B, C, D, E.

В моем варианте это делается лишь тогда, когда все условия равны false. 

Подумайте теперь о быстродействии. 

 
icas:

В варианте

необходимо всегда определять все условия A, B, C, D, E.

В моем варианте это делается лишь тогда, когда все условия равны false. 

Подумайте теперь о быстродействии. 

Спасибо! И как это? У меня эти условия прописаны в старте, после чего вызываю Вашу Request(). Где и как сделать не понимаю. :(

Имейте в виду, что все условия взаимоисключающие, и всегда будут все false или только одно true, а остальные false.

 

icas!

Очень надеюсь, что я как-то не сделал так, как нужно, поскольку проверка Вашего варианта не уменьшила время прогона в тестере! 

Может, объясните мне, что чего и куда поставить! Спасибо! 

 

borilunad, любые вызовы функций добавляют лишние тормоза. Поэтому если требуется максимальная скорость, то нужно избавляться от всяких  Request(), выполняющих односложные операции. Это же односится и к циклам. Проверка уловий в цикле всегда значительно медленней, чем просто серия вложенных if()