Вопрос:

12.2. На бесконечном поле имеется вертикальная стена. Длина стены неизвестна. От нижнего конца стены вправо отходит горизонтальная стена неизвестной длины, а от верхнего конца стены влево отходит горизонтальная стена, длина которой также неизвестна. Робот находится в клетке, расположенной сверху от левого края горизонтальной стены. На рисунке указано расположение стен и Робота. Робот обозначен буквой «Р». Напишите для Робота программу, использующую 3 циклических алгоритма, закрашивающую все клетки, расположенные непосредственно справа от вертикальной стены и сверху от верхней горизонтальной стены. Вы можете использовать цикл нц-раз-кц или нц-пока-кц. Робот должен закрасить только клетки, удовлетворяющие данному условию. На рисунке показаны клетки, которые Робот должен закрасить (см. рисунок). Конечное расположение Робота может быть произвольным. При исполнении алгоритма Робот не должен разрушиться. Выполнение алгоритма должно завершиться. Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе. Сохраните алгоритм в формате программы Кумир или в текстовом файле. Название файла и каталог для сохранения Вам сообщат организаторы.

Смотреть решения всех заданий с листа

Ответ:

``` алг нач ; Вспомогательная процедура закраски клеток справа от вертикальной стены алг закрасить_справа нач нц пока не справа стена закрасить вправо кц кон ; Вспомогательная процедура закраски клеток сверху от верхней горизонтальной стены алг закрасить_сверху нач вверх ; Перемещаемся к верхней стене нц пока не слева стена закрасить влево кц кон ; Основная программа закрасить_справа ; Закрашиваем клетки справа от вертикальной стены закрасить_сверху ; Закрашиваем клетки сверху от верхней горизонтальной стены кон ``` **Разъяснение к программе:** 1. **алг**: Объявляет начало алгоритма. 2. **нач**: Обозначает начало выполнения алгоритма. 3. **алг закрасить_справа**: Определяет вспомогательный алгоритм (процедуру) для закраски клеток справа от вертикальной стены. 4. **нц пока не справа стена**: Запускает цикл "пока не справа стена". Этот цикл будет выполняться до тех пор, пока справа от Робота нет стены. 5. **закрасить**: Закрашивает текущую клетку. 6. **вправо**: Перемещает Робота на одну клетку вправо. 7. **кц**: Обозначает конец цикла. 8. **кон**: Обозначает конец вспомогательного алгоритма "закрасить_справа". 9. **алг закрасить_сверху**: Определяет вспомогательный алгоритм для закраски клеток сверху от верхней горизонтальной стены. 10. **вверх**: Перемещает Робота на одну клетку вверх, чтобы он оказался у верхней стены. 11. **нц пока не слева стена**: Запускает цикл "пока не слева стена". 12. **влево**: Перемещает Робота на одну клетку влево. 13. **кон**: Обозначает конец вспомогательного алгоритма "закрасить_сверху". 14. **закрасить_справа**: Вызывает (запускает) вспомогательный алгоритм для закраски клеток справа. 15. **закрасить_сверху**: Вызывает вспомогательный алгоритм для закраски клеток сверху. 16. **кон**: Обозначает конец основного алгоритма. **Развернутое объяснение:** Задача состоит в том, чтобы закрасить клетки справа от вертикальной стены и сверху от горизонтальной стены, используя Робота. Чтобы это сделать, мы создаем две вспомогательные процедуры: * `закрасить_справа`: Эта процедура перемещает Робота вправо и закрашивает каждую клетку, пока не достигнет стены. * `закрасить_сверху`: Эта процедура сначала перемещает Робота к верхней стене, а затем перемещает его влево, закрашивая каждую клетку, пока не достигнет стены. Основная программа сначала вызывает процедуру `закрасить_справа`, а затем `закрасить_сверху`. Таким образом, Робот закрашивает все необходимые клетки, не разрушаясь и завершая работу.
ГДЗ по фото 📸
Подать жалобу Правообладателю