Advertisement
Guest User

nagodi

a guest
Jan 28th, 2020
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.23 KB | None | 0 0
  1. использовать Робот
  2. алг
  3. нач
  4. цел а, б, высота, ширина
  5. лит направление
  6.  
  7. а:= дойти_до_стены("вверх")
  8. б:= дойти_до_стены("влево")
  9.  
  10.  
  11. вывод "Введите высота прямоугольника" ;
  12. ввод высота
  13.  
  14. вывод "Введите шрину прямоугольника" ;
  15. ввод ширина
  16.  
  17.  
  18.  
  19. закрасить_прямоугольник (ширина, высота)
  20.  
  21. кон
  22.  
  23.  
  24.  
  25. алг закрасить_прямоугольник (арг цел ширина, арг цел высота)
  26.  
  27. дано ширина > 0 и высота > 0
  28. | роьот в левом верхнем углу прямоугольника; высота и ширшна прямоугольника
  29.  
  30. надо
  31. | прямоугольник закрашен польностью или частично; робот в правом нижнем уголу
  32. |прямоугольника
  33. нач
  34. цел а, б, i, в, х
  35. лит направление
  36.  
  37. вывод "Введите позицию вправо" ;
  38. ввод в
  39.  
  40. вывод "Введите позицию вниз" ;
  41. ввод х
  42.  
  43. цел к
  44. к:=высота
  45. цел к1
  46. к1:=ширина
  47. если высота > 0 и ширина > 0
  48. то
  49. идти_кол_во_шагов("вправо", в)
  50. идти_кол_во_шагов("вниз", х)
  51.  
  52. нц для i от 1 до высота шаг 1
  53. если к >0 и к1 >0
  54. то
  55. направление:= "вниз"
  56. закрасить_ряд(направление, к)
  57. сменить_на_противоположное_90(направление)
  58. закрасить_ряд(направление, к1)
  59. сменить_на_противоположное_90(направление)
  60. закрасить_ряд(направление, к)
  61. сменить_на_противоположное_90(направление)
  62. закрасить_ряд(направление, к1 -1)
  63. перейти_на_клетку ("вниз")
  64.  
  65. к := к -2
  66. к1 := к1 -2
  67. все
  68.  
  69. кц
  70.  
  71. все
  72.  
  73. кон
  74.  
  75.  
  76. |Дойти до стены в заданном направлении
  77. алг цел дойти_до_стены(арг лит направление)
  78. | робот в произвольной клетке, направление перемещения
  79. дано направление = "вверх" или направление ="вниз" или направление = "влево" или направление = "вправо"
  80. | робот рядом со стеной в указанном направлении; кол-во пройденных шагов
  81. надо стена_рядом(направление)
  82. нач
  83. знач := 0
  84. нц пока не стена_рядом(направление)
  85. перейти_на_клетку(направление)
  86. знач := знач + 1
  87. кц
  88. кон
  89.  
  90. |Определить, имеется ли рядом стена в заданном направлении
  91. алг лог стена_рядом(арг лит направление)
  92. | робот в произвольной клетке, направление поиска стены
  93. дано направление = "вверх" или направление = "вниз" или направление = "влево" или направление = "вправо"
  94. надо | признак наличия стены в заданном направлении
  95. нач
  96. выбор
  97. при направление = "влево": знач := слева стена
  98. при направление = "вправо": знач := справа стена
  99. при направление = "вверх": знач := сверху стена
  100. при направление = "вниз": знач := снизу стена
  101. все
  102. кон
  103.  
  104.  
  105.  
  106. |Перейти на клетку в заданном направлении. Считается, что стены не мешают роботу передвигаться
  107. алг перейти_на_клетку(арг лит направление)
  108. | робот в произвольной клетке; известно направление перемещения;
  109. | предполагается, что стены не мешают роботу перемещаться
  110. дано направление = "вверх" или направление = "вниз" или направление = "влево" или направление = "вправо"
  111. надо | робот в позиции, отстоящей от исходной на одну клетку в заданном направлении
  112. нач
  113. выбор
  114. при направление = "влево": влево
  115. при направление = "вправо": вправо
  116. при направление = "вверх": вверх
  117. при направление = "вниз": вниз
  118. все
  119. кон
  120.  
  121.  
  122. алг сменить_на_противоположное_90(аргрез лит направление)
  123. дано направление = "влево" или направление = "вправо" или направление = "вниз" или направление = "вверх"
  124. надо |противоположное направление
  125. нач
  126. выбор
  127. при направление = "влево": направление := "вниз"
  128. при направление = "вправо": направление := "вверх"
  129. при направление = "вверх": направление := "влево"
  130. при направление = "вниз": направление := "вправо"
  131. все
  132. кон
  133.  
  134. |Закрасить ряд в заданном направлени и заданной длины
  135. алг закрасить_ряд(лит направление, цел длина)
  136. | робот на краю ряда; длина и направление закраски ряда
  137. дано длина >= 0 и (направление = "вверх" или направление = "вниз" или направление = "влево" или направление = "вправо")
  138. надо | закрашенный ряд; робот на другом краю ряда
  139. нач
  140.  
  141. закрасить
  142. нц длина-1 раз
  143.  
  144. | Переходим на следующую клетку
  145. перейти_на_клетку(направление)
  146.  
  147. закрасить
  148. кц
  149. кон
  150.  
  151. алг идти_кол_во_шагов(лит направление, цел кол_во_шагов)
  152. |робот в произвольной позиции, известно направление движения и кол-во шагов;
  153. |стены не мешают роботу передвигаться
  154. дано кол_во_шагов >= 0 и (направление = "вверх" или направление = "вниз" или направление = "влево" или направление = "вправо")
  155.  
  156. надо |робот в позиции, удаленной от исходной на заданное кол-во шагов
  157. нач
  158.  
  159. нц кол_во_шагов раз
  160. | Переходим на следующую клетку
  161. перейти_на_клетку(направление)
  162. кц
  163.  
  164. кон
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement