Контрольные задания > 12.2. На бесконечном поле имеется вертикальная стена. Длина стены неизвестна, в стене есть ровно один проход, ширина которого неизвестна. От верхнего конца стены вправо отходит горизонтальная стена неизвестной длины. Робот находится в клетке, расположенной снизу от правого края горизонтальной стены. На рисунке указано расположение стен и Робота. Робот обозначен буквой «Р».
Напишите для Робота программу, использующую 4 циклических алгоритма, закрашивающую все клетки, расположенные непосредственно справа и слева от вертикальной стены. Вы можете использовать цикл нц-раз-кц или нц-пока-кц. Робот должен закрасить только клетки, удовлетворяющие данному условию. На рисунке показаны клетки, которые Робот должен закрасить (см. рисунок).
Конечное расположение Робота может быть произвольным. При исполнении алгоритма Робот не должен разрушиться. Выполнение алгоритма должно завершиться. Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе. Сохраните алгоритм в формате программы Кумир или в текстовом файле. Название файла и каталог для сохранения Вам сообщат организаторы.
Вопрос:
12.2. На бесконечном поле имеется вертикальная стена. Длина стены неизвестна, в стене есть ровно один проход, ширина которого неизвестна. От верхнего конца стены вправо отходит горизонтальная стена неизвестной длины. Робот находится в клетке, расположенной снизу от правого края горизонтальной стены. На рисунке указано расположение стен и Робота. Робот обозначен буквой «Р».
Напишите для Робота программу, использующую 4 циклических алгоритма, закрашивающую все клетки, расположенные непосредственно справа и слева от вертикальной стены. Вы можете использовать цикл нц-раз-кц или нц-пока-кц. Робот должен закрасить только клетки, удовлетворяющие данному условию. На рисунке показаны клетки, которые Робот должен закрасить (см. рисунок).
Конечное расположение Робота может быть произвольным. При исполнении алгоритма Робот не должен разрушиться. Выполнение алгоритма должно завершиться. Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе. Сохраните алгоритм в формате программы Кумир или в текстовом файле. Название файла и каталог для сохранения Вам сообщат организаторы.
Ответ:
alg нач
вправо
нц пока не стена сверху
вверх
закрасить
влево
закрасить
вправо
кц
вправо
нц пока не стена снизу
вниз
кц
влево
нц пока не стена сверху
вверх
закрасить
вправо
закрасить
влево
кц
кон
Пояснения к алгоритму:
1. `вправо`: Робот перемещается вправо от начальной позиции.
2. `нц пока не стена сверху`: Организуется цикл, который выполняется, пока робот не достигнет верхнего конца стены.
3. `вверх`: Робот поднимается на одну клетку вверх.
4. `закрасить`: Закрашивается текущая клетка.
5. `влево`: Робот перемещается влево от стены.
6. `закрасить`: Закрашивается клетка слева от стены.
7. `вправо`: Робот возвращается вправо от стены.
8. `кц`: Конец цикла.
9. `вправо`: Робот перемещается вправо к горизональной стене.
10. `нц пока не стена снизу`: Организуется цикл для возвращения в исходное положение по горизонтали.
11. `вниз`: Робот спускается вниз.
12. `кц`: Конец цикла.
13. `влево`: Робот перемещается влево.
14. `нц пока не стена сверху`: Организуется цикл для закрашивания клеток слева от вертикальной стены при движении вниз.
15. `вверх`: Робот поднимается на одну клетку вверх.
16. `закрасить`: Закрашивается текущая клетка.
17. `вправо`: Робот перемещается вправо от стены.
18. `закрасить`: Закрашивается клетка справа от стены.
19. `влево`: Робот возвращается влево от стены.
20. `кц`: Конец цикла.
Этот алгоритм закрашивает все клетки непосредственно справа и слева от вертикальной стены, длина которой неизвестна.