Как определить последовательность используемых функций? - PullRequest
0 голосов
/ 28 сентября 2018

В настоящее время я пишу программу для блокировки набора из 3 номеров.Как работает реальный циферблат, вы должны повернуть направо на первый номер, повернуть налево на второй номер и снова повернуть направо на третий номер.У меня есть функции, которые выглядят как turnRight и turnLeft.В настоящее время я пишу тесты для своей комбо-блокировки, и один тест включает в себя поворот на правильные числа, но в неправильных направлениях (справа, справа, справа, а не справа, слева, справа).Есть ли способ определить последовательность, в которой использовались функции (например, были использованы turnRight, turnLeft, turnRight, так что верните 1)?

Спасибо

1 Ответ

0 голосов
/ 28 сентября 2018

в одну сторону

     enum {RIGHT, LEFT};

     int my_combo[]=
     {
       RIGHT, LEFT, RIGHT, -1 ///-1 is a delimiter in order to test if the end of the array of combo keys.
     };

     TypeReturn turnLeft(){...}
     TypeReturn turnRight(){...}

     ...
     ///the function where you are going to test it, for this example return Boolean
     /// you change for your need

     int entry_combo[]={RIGHT, RIGHT, RIGHT, -1};
     /// this could be a while loop too, some people preferred that
      bool ret = true;
     int i(0);
     for(; ;i++)
     {
        if(entry_combo[i]!= -1 && my_combo[i] !=-1)
        {
            if(entry_combo[i] != my_combo[i])
               { 
                  ret = false;
                  break;
                }
             else
               {
                     ////here you could put turnLeft or turnRight, depending of what value are in my_combo.
               }
        }
        else
        {
            ret = (i==0)?true:(entry_combo[i] != my_combo[i])?false:ret))      ; /// you must decide if what to return if the combo key  
                                    /// are empty. for me just return true. there are other criteria to choose,
        }
     } 
 return ret;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...