Advertisement
Semior001

teoretic automa

Oct 20th, 2016
344
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.93 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. enum direction {
  5.     NORTH,
  6.     EAST,
  7.     SOUTH,
  8.     WEST
  9. };
  10.  
  11. // Маршрут робота
  12. const int route[][3] = {
  13.     {0, 1},
  14.     {1, 1},
  15.     {1, 0},
  16.     {2, 0},
  17.     {2, 1},
  18.     {3, 1},
  19.     {3, 0},
  20.     {4, 0},
  21.     {4, 1},
  22.     {5, 1},
  23.     {5, 2},
  24.     {0, 2}
  25. };
  26.  
  27. // Начальные координаты и направление робота
  28. int coord[2] = {0, 0};
  29. int coord_direction = EAST;
  30. int i;
  31.  
  32. int main(){
  33.     // Пробежка по маршруту
  34.     // j=0 - координата по Y
  35.     // j=1 - координата по X
  36.     // j=2 - количество загружаемых шариков
  37.     for(i = 0; i < sizeof(route)/sizeof(route[0]); ++i){
  38.  
  39.         // Проверяем, есть ли где-то ошибка в маршруте
  40.         if((coord[0]!=route[i][0]) && (coord[1]!=route[i][1])){
  41.             cout << "Ошибка в маршруте. Где-то не просмотрен перекресток." << endl;
  42.             cout << "Координаты робота: X=" << coord[1] << " Y=" << coord[0] << " Направление=" << coord_direction << endl;
  43.             cout << "Координаты итерации: X=" << route[i][1] << " Y=" << route[i][0] << endl;
  44.             break;
  45.         }
  46.  
  47.         // Поворот по X
  48.         if(coord[1]<route[i][1]){
  49.             if(coord_direction==SOUTH){
  50.                 coord_direction--;
  51.                 cout << "LEFT" << endl;
  52.             }else{
  53.                 while(coord_direction!=EAST){
  54.                     coord_direction++;
  55.                     cout << "RIGHT" << endl;
  56.                     if(coord_direction==WEST+1)
  57.                         coord_direction = NORTH;
  58.                 }
  59.             }
  60.         }else if(route[i][1]<coord[1]){
  61.             if(coord_direction==NORTH){
  62.                 coord_direction = WEST;
  63.                 cout << "LEFT" << endl;
  64.             }else{
  65.                 while(coord_direction!=WEST){
  66.                     coord_direction++;
  67.                     cout << "RIGHT" << endl;
  68.                     if(coord_direction==WEST+1)
  69.                         coord_direction = NORTH;
  70.                 }
  71.             }
  72.         }
  73.  
  74.         // Поворот по Y
  75.         if(coord[0]<route[i][0]){
  76.             if(coord_direction==EAST){
  77.                 coord_direction--;
  78.                 cout << "LEFT" << endl;
  79.             }else{
  80.                 while(coord_direction!=NORTH){
  81.                     coord_direction++;
  82.                     cout << "RIGHT" << endl;
  83.                     if(coord_direction==WEST+1)
  84.                         coord_direction = NORTH;
  85.                 }
  86.             }
  87.         }else if(route[i][0]<coord[0]){
  88.             if(coord_direction==WEST){
  89.                 coord_direction--;
  90.                 cout << "LEFT" << endl;
  91.             }else{
  92.                 while(coord_direction!=SOUTH){
  93.                     coord_direction++;
  94.                     cout << "RIGHT" << endl;
  95.                     if(coord_direction==WEST+1)
  96.                         coord_direction = NORTH;
  97.                 }
  98.             }
  99.         }
  100.  
  101.         // Движение вперед
  102.         while(coord[1]<route[i][1]){
  103.             coord[1]++;
  104.             cout << "FORWARD" << endl;
  105.         }
  106.         while(coord[1]>route[i][1]){
  107.             coord[1]--;
  108.             cout << "FORWARD" << endl;
  109.         }
  110.         while(coord[0]<route[i][0]){
  111.             coord[0]++;
  112.             cout << "FORWARD" << endl;
  113.         }
  114.         while(coord[0]>route[i][0]){
  115.             coord[0]--;
  116.             cout << "FORWARD" << endl;
  117.         }
  118.  
  119.         // Кидаем мячи
  120.         if(route[i][2]){
  121.             cout << "THROW " << route[i][2] << " BALLS" << endl;
  122.         }
  123.  
  124.     }
  125.     return 0;
  126. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement