Advertisement
lPestl

Task133.cpp

Oct 21st, 2018
193
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.31 KB | None | 0 0
  1. /*          01. Метод "Просто посчитать"            */ 
  2.  
  3. #include <iostream>
  4. // Функция вычисления (тут параметр height даже лишний, если не делать проверку на ввод корректных данных)
  5. unsigned int calc_pac_man_path(int width, int height, int row, int column)
  6. {
  7.     // Сначала умножаем номер строки на ширину матрицы и от полученного значения достаточно отнять
  8.     // количество элементов до номера столбца, в случае если строка четная (значит в этой строке pac-man двигается слева направо),
  9.     // или отнять ширину матрицы за вычетом номера столбца в случае если строка нечетная (двигается справа налево)
  10.     return static_cast<unsigned int>(row) * width - (row % 2 == 0 ? column - 1/*единичку отнимаем, чтобы включительно было*/ : width - column);
  11. }
  12.  
  13. // Tests
  14. int main()
  15. {
  16.     /*
  17.      *      X 0 0
  18.      *      0 0 0
  19.      *      0 0 0
  20.      */
  21.     std::cout << "N x M = " << 3 << " x " << 3 << ";" << std::endl <<
  22.         "ROW x COLUMN = " << 1 << " x " << 1 << std::endl <<
  23.         "Answer = " << calc_pac_man_path(3, 3, 1 , 1) << std::endl << std::endl;
  24.  
  25.     /*
  26.      *      . X 0
  27.      *      0 0 0
  28.      *      0 0 0
  29.      */
  30.     std::cout << "N x M = " << 3 << " x " << 3 << ";" << std::endl <<
  31.         "ROW x COLUMN = " << 1 << " x " << 2 << std::endl <<
  32.         "Answer = " << calc_pac_man_path(3, 3, 1, 2) << std::endl << std::endl;
  33.  
  34.     /*
  35.      *      . . X
  36.      *      0 0 0
  37.      *      0 0 0
  38.      */
  39.     std::cout << "N x M = " << 3 << " x " << 3 << ";" << std::endl <<
  40.         "ROW x COLUMN = " << 1 << " x " << 3 << std::endl <<
  41.         "Answer = " << calc_pac_man_path(3, 3, 1, 3) << std::endl << std::endl;
  42.  
  43.     /*
  44.      *      . . .
  45.      *      0 0 X
  46.      *      0 0 0
  47.      */
  48.     std::cout << "N x M = " << 3 << " x " << 3 << ";" << std::endl <<
  49.         "ROW x COLUMN = " << 2 << " x " << 3 << std::endl <<
  50.         "Answer = " << calc_pac_man_path(3, 3, 2, 3) << std::endl << std::endl;
  51.  
  52.     /*
  53.      *      . . .
  54.      *      0 X .
  55.      *      0 0 0
  56.      */
  57.     std::cout << "N x M = " << 3 << " x " << 3 << ";" << std::endl <<
  58.         "ROW x COLUMN = " << 2 << " x " << 2 << std::endl <<
  59.         "Answer = " << calc_pac_man_path(3, 3, 2, 2) << std::endl << std::endl;
  60.  
  61.     // Test from task
  62.     std::cout << "N x M = " << 3 << " x " << 3 << ";" << std::endl <<
  63.         "ROW x COLUMN = " << 2 << " x " << 1 << std::endl <<
  64.         "Answer = " << calc_pac_man_path(3, 3, 2, 1) << std::endl << std::endl;
  65.  
  66.     /*
  67.      *      . . .
  68.      *      . . .
  69.      *      X 0 0
  70.      */
  71.     std::cout << "N x M = " << 3 << " x " << 3 << ";" << std::endl <<
  72.         "ROW x COLUMN = " << 3 << " x " << 1 << std::endl <<
  73.         "Answer = " << calc_pac_man_path(3, 3, 3, 1) << std::endl << std::endl;
  74.  
  75.     /*
  76.      *      . . .
  77.      *      . . .
  78.      *      . X 0
  79.      */
  80.     std::cout << "N x M = " << 3 << " x " << 3 << ";" << std::endl <<
  81.         "ROW x COLUMN = " << 3 << " x " << 2 << std::endl <<
  82.         "Answer = " << calc_pac_man_path(3, 3, 3, 2) << std::endl << std::endl;
  83.  
  84.     /*
  85.      *      . . .
  86.      *      . . .
  87.      *      . . X
  88.      */
  89.     std::cout << "N x M = " << 3 << " x " << 3 << ";" << std::endl <<
  90.         "ROW x COLUMN = " << 3 << " x " << 3 << std::endl <<
  91.         "Answer = " << calc_pac_man_path(3, 3, 3, 3) << std::endl << std::endl;
  92.  
  93.     return 0;
  94. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement