Скачать MetaTrader 5

Функция тернарного упрощения.

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Узнай, как вставлять видео в редакторе сообщений
Uladzimir Izerski
2785
Uladzimir Izerski 2016.10.30 10:23 

Есть ли упрощенная функция получения результата? Рассчитываю так. Переменные имеют значения от 1 до 3..

Не уверен, что получаю правильные  результаты. Может у кого есть мысли на этот каприз? 

В идеале меня интересует получить результат из четырех или даже из пяти переменных. 

Буду благодарен за конкретные деловые предложения. 

char Функция_тернарного_упрощения(char перв,char втор,char трет)
  {
   char результ=2;
   //---
   if(перв==3)
     {
      if(втор==3)
        {
         if(трет==3) результ=3;else
         if(трет==2) результ=3;else
         if(трет==1) результ=2;
        }
      else
      if(втор==2)
        {
         if(трет==3) результ=3;else
         if(трет==2) результ=2;else
         if(трет==1) результ=1;
        }
      else
      if(втор==1)
        {
         if(трет==3) результ=3;else
         if(трет==2) результ=2;else
         if(трет==1) результ=1;
        }
     }
   else
//+------------------------------------------------------------------+
   if(перв==2)
     {
      if(втор==3)
        {
         if(трет==3) результ=3;else
         if(трет==2) результ=2;else
         if(трет==1) результ=2;
        }
      else
      if(втор==2)
        {
         if(трет==3) результ=3;else
         if(трет==2) результ=2;else
         if(трет==1) результ=1;
        }
      else
      if(втор==1)
        {
         if(трет==3) результ=2;else
         if(трет==2) результ=2;else
         if(трет==1) результ=1;
        }
     }
   else
//+------------------------------------------------------------------+
   if(перв==1)
     {
      if(втор==1)
        {
         if(трет==1) результ=1;else
         if(трет==2) результ=1;else
         if(трет==3) результ=2;
        }
      else
      if(втор==2)
        {
         if(трет==1) результ=1;else
         if(трет==2) результ=2;else
         if(трет==3) результ=2;
        }
      else
      if(втор==3)
        {
         if(трет==1) результ=1;else
         if(трет==2) результ=2;else
         if(трет==3) результ=3;
        }
     }
   return(результ);
  }
Uladzimir Izerski
2785
Uladzimir Izerski 2016.10.30 10:38  

Может не всем понятен смысл.

Это упрощенный  программный переключатель каналов. Есть ли способы его усовершенствовать?

new-rena
3372
new-rena 2016.10.30 10:43  
Uladzimir Izerski:

Может не всем понятен смысл.

Это упрощенный  программный переключатель каналов. Есть ли способы его усовершенствовать?

у Вас комбинация цифр 3х3х3 (куб со стороной 3)

Предлагаю трехмерный массив, 1 и 2 и 3-е измерение - стороны

выбор/запись канала произойдет в одной строке:

channel=array(1,2,3); // равно 2

 и так далее 

Uladzimir Izerski
2785
Uladzimir Izerski 2016.10.30 10:58  
new-rena:

у Вас комбинация цифр 3х3 (плоский квадрат со сторонами 3х3)

Предлагаю трехмерный массив, 1 и 2 измерение - стороны, 3-е - результат

выбор канала произойдет в одной строке: channel=array(1,2,3)=2; и так далее 

Упрощенно понимаю, что результат=сумма /3? Или как?
new-rena
3372
new-rena 2016.10.30 11:22  
Uladzimir Izerski:
Упрощенно понимаю, что результат=сумма /3? Или как?

вот результат

//результат равен 2:
результ=array(1,2,3);

//результат равен 1:
результ=array(1,2,1);

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