Помогите решить логическую задачку

 
У меня пока не хватает опыта в программировании, поэтому прошу помочь решить такую задачку: есть 4 переменные (A, B, C, D). Условием открытия ордера является следующее: если A>0 и B>0, то не имеет значения, чему равны C и D. Если A>0 и B<0, то или C должно быть больше нуля, или D должно быть больше нуля. Во всех остальных случаях ордер не должен открываться. Вроде бы ничего особенно сложного нет, но что-то никак не получается ... Заранее благодарен.
 
if((A>0 && B>0) || (A>0 && B<0 && (C>0 || D>0))){
 

if (A>0 &&  B>0)

{

   /// тут

}

else if (A>0 && B<0)

{

  if (C>0 || D>0)

  {

     /// тут

  }

}

 
блин, второй :)
 
if(A>0)
  {if(B>0) функ_открытия_ордера();
   else if(B<0 && (D>0||C>0)) функ_открытия_ордера();           
  }
 

Мой пост пропал

int cmd=-1;
if (A>0) {
  if (B>0) cmd=1;
  else if (C>0 || D>0) cmd=1;
}
if (cmd==1) OrderSend();
 
Третим будешь ? :)
 

сколько людей, столько и мнений.

Супер!

Мы кажись FxRoller запутали :))))

 
четвертого примите? (:
 
ВАЛЯЙ! только вариант поинтереснее придумай
 
Integer >>:
if((A>0 && B>0) || (A>0 && B<0 && (C>0 || D>0))){

Спасибо всем. Самое интересное, что я сделал точно так же, как у Integer, ошибок при компиляции не было, но почему-то реально исполняется только первая часть (A>0 && B>0), а все, что после ИЛИ как будто не существует вообще. Чудеса ...

Причина обращения: