SWITCH - страница 2

 
A mozno i tak:


#define EURUSD 1;
#define GBPUSD 2;
#define USDCHF 3;
#define USDJPY 4;
#define USDCAD 5;
#define AUDUSD 6;
#define EURJPY 7;


int GetCurrencyCode(string currency)
{
if (currency == "EURUSD") return EURUSD;
if (currency == "GBPUSD") return GBPUSD;
if (currency == "USDCHF") return USDCHF;
if (currency == "USDJPY") return USDJPY;
if (currency == "USDCAD") return USDCAD;
if (currency == "AUDUSD") return AUDUSD;
if (currency == "EURJPY") return EURJPY;

return 0;
}

int init()
{
string vl="EURUSD";
}

int start()
{
switch (GetCurrencyCode(vl))
{
case EURUSD: P=EURUSD; break;
case USDCAD: P=USDCAD; break;
case AUDUSD: P=AUDUSD; break;
case EURJPY: P=EURJPY; break;
default: P=0;break;
}
}



Ispolzuite na zdarovje :-)

 
A mozno i tak:

Ispolzuite na zdarovje :-)


Не, так не выйдет, здесь проверяется валюта графика, а мне это не к чему,
у меня эксперт на разных валюных парах окна ему не нужны.
Но код хороший, спасибо.
 
A mozno i tak:

Ispolzuite na zdarovje :-)


Не, так не выйдет, здесь проверяется валюта графика, а мне это не к чему,
у меня эксперт на разных валюных парах окна ему не нужны.
Но код хороший, спасибо.


Tak eto - konvertacija stringa valiuty na cifru, a eto uze mozno ispolzovat' v switch->case :-)
Naprimer, GetCurrencyCode(Symbol()) tebe verniot sovpadajus4ij kod valiuty, katorovo kak cifru ispolzuj gde ugodno.
 
 case 1>=1 && 15000<=15000 :Print(A1); break;
 case 2>=2 && 333<=333 :Print(A1); break;

Что за ошибка?

'&&' - case value already used   '&&' - значение регистра уже используется

Если одну строчку компилировать, то все нормально

 
Aleksey Rodionov:

Что за ошибка?

'&&' - case value already used   '&&' - значение регистра уже используется

Если одну строчку компилировать, то все нормально

У вас две строки абсолютно одинаковые по сути. Вы понимаете что в коде написано? Выражения "1>=1 && 15000<=15000" и "2>=2 && 333<=333" дают true в результате. Должны быть разные значения, что и говорится в ошибке.

 
Aliaksandr Hryshyn:
У вас две строки абсолютно одинаковые по сути. Вы понимаете что в коде написано? Выражения "1>=1 && 15000<=15000" и "2>=2 && 333<=333" дают true в результате. Должны быть разные значения, что и говорится в ошибке.

Да понимаю, но не как специалист. У меня этот код работает через if ,хотел через свитч сделать что бы было компактней.
 

До компьютера добрался. Вот собственно код который хотел переделать в switch

int Rand = MathRand();
if (Rand >= 1 && Rand <= 15000)
{
Print (A1);
}
if (Rand >= 15001 && Rand <= 30000)
{
Print (A2);
}
 
Aleksey Rodionov:

До компьютера добрался. Вот собственно код который хотел переделать в switch

оператор switch работает с константными выражениями, если Вы заранее знаете какие результаты получите в Rand , тогда и пишите в case эти значения:

int Rand=MathRand();
switch(Rand)
  {
   case 1:
   case 2:
   case 3:
   case 4:
   .....
   case 15000:
      Print(A1);
      break;
   case 15001:
   case 15002:
   case 15003:
   case 15004:
   ......
   case 30000:
      Print(A2);
      break;
   default: Print("Rand не попал в диапазон 1-30000");
  }
Причина обращения: