помогите разобраться с функцией переключения - триггером

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
bor-ix
105
bor-ix  

Ребята подскажите пожалуйста как написать триггер/переключатель...


допустим есть значение "А" (наше депо) при этом работает "Алгоритм1"

при изменении "А" в меньшую сторону на 1% вместо "Алгоритм1" начинает работать "Алгоритм2"...

при дальнейшем уменьшении "А" еще на 1% "Алгоритм2" переключается обратно на "Алгоритм1"


такая конструкция - у меня не работает:

double depo = AccountBalance( );

int triger = 0;

if (triger == 0)
{
   triger = 1;
   double   depo2 = depo;
}

if (triger == 1 && depo2 > depo + depo * 0.01) 
{
   triger = 2;
   depo2 = depo;
}

if (triger == 2 && depo2 > depo + depo * 0.01) 
{
   triger = 1;
   depo2 = depo;
}


if (triger == 1) Print("triger1 " + depo2);
if (triger == 2) Print("triger2 " + depo2);
в чем моя ошибка?
Alexey Valeev
6148
Alexey Valeev  
bor-ix:
в чем моя ошибка?

Первое что бросается в глаза переменная triger=0 каждый раз инициализируется нолём, сделайте её статичной.

bor-ix
105
bor-ix  
Alexey Valeev:

Первое что бросается в глаза переменная triger=0 каждый раз инициализируется нолём, сделайте её статичной.

вынести в условия?

Artyom Trishkin
Модератор
102926
Artyom Trishkin  
bor-ix:

вынести в условия?

static int, либо объявите её в глобальной области.
bor-ix
105
bor-ix  
Artyom Trishkin:
static int, либо объявите её в глобальной области.

static int triger = 0; - не помогает, так же как и в глобальных (в начале кода)...


может каким другим способом можно реализовать?

Sergey Kolemanov
919
Sergey Kolemanov  
bor-ix:

static int triger = 0; - не помогает, так же как и в глобальных (в начале кода)...

int triger; и  double depo2; на глобальном уровне(в начале кода)

bor-ix
105
bor-ix  
Sergey Kolemanov:

int triger; и  double depo2; на глобальном уровне(в начале кода)

спасибо - все получилось! работает!

понял в чем ошибка - учту в дальнейшем!

всем большое спасибо за ответы!

Alexey Valeev
6148
Alexey Valeev  
bor-ix:
в чем моя ошибка?
double depo = AccountBalance( );

int triger = 0;                                              // При каждом последующем вызове обнуляется

if (triger == 0)
{
   triger = 1;
   double   depo2 = depo;                                   // depo2 объявлено в локальной области данного условия, то есть при следующем вызове когда данное условие не выполняется данной переменной не существует.
}

                                                            // Если условие было else переменной depo2 не существует

Олег avtomat
6909
Олег avtomat  

А не удобнее ли в этом случае использовать switch ?

if(...) x=1; else
if(...) x=2; else
if(...) x=3; else
и т.д. сколько надо


           switch ( x ) 
           {
              case 1:   "Алгоритм1";  break;
              case 2:   "Алгоритм2";  break;
              case 3:   "Алгоритм3";  break;
              и т.д. сколько надо
              default:  "Алгоритм0";   break;
           } 

bor-ix
105
bor-ix  
Alexey Valeev:

спасибо за объяснение!

хорошо и доступно объяснил!

bor-ix
105
bor-ix  
Олег avtomat:

А не удобнее ли в этом случае использовать switch ?

в том то и дело что условие - одинаковое... а алгоритм надо менять попеременно...

если бы было разное - можно было бы и switch


ЗЫ: хотя вы тоже наверное правы - можно и так...

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий