Упр.3.86 ГДЗ Сборник упражнений Босова 7-9 класс (Информатика)
- На бесконечном клетчатом поле имеется горизонтальная стена. Длина стены неизвестна. Робот находится в одной из клеток, примыкающих к стене сверху. На рисунке указан один из возможных вариантов расположения Робота и стены (Робот обозначен буквой «Р»). Робот должен закрасить все клетки, примыкающие к стене сверху. Конечное положение Робота значения не имеет. Опишите укрупнёнными блоками план действий Робота по решению поставленной задачи.
- Где-то в поле Робота находятся две вертикальные стены равной, но неизвестной длины, расположенные одна напротив другой. Робот находится в произвольной клетке справа от правой стены, причём напротив неё. На рисунке указан один из возможных вариантов расположения Робота и стен (Робот обозначен буквой «Р»). Робот приступил к исполнению следующего алгоритма. Каким будет результат исполнения данного алгоритма? Изобразите его на рисунке. Опишите алгоритм действий Робота укрупнёнными шагами.
- На бесконечном клетчатом поле имеется горизонтальная стена. Длина стены неизвестна. Робот находится в одной из клеток, примыкающих к стене сверху. Точное положение Робота неизвестно. На рисунке указан один из возможных вариантов расположения Робота и стены (Робот обозначен буквой «Р»). Робот должен закрасить через одну клетки, примыкающие к стене сверху, начиная с самой левой клетки. Конечное положение Робота значения не имеет. Алгоритм должен решать задачу для стены произвольного размера и любого допустимого начального положения Робота. При составлении алгоритма можно использовать следующее разбиение задачи на подзадачи:
- перевести Робота в исходное положение — крайнюю левую клетку, примыкающую к стене сверху;
- двигаться слева направо, закрасить через одну все клетки, примыкающие к стене.
Напишите алгоритм.
- Робот находится в произвольной точке внутри прямоугольного огороженного стенами участка клетчатого поля. Размеры прямоугольника неизвестны. Напишите алгоритм, с помощью которого Робот закрасит все клетки, примыкающие к нижней стороне прямоугольника. Конечное положение Робота может быть произвольным.
- Робот находится в произвольной точке внутри прямоугольного огороженного стенами участка клетчатого поля. Размеры прямоугольника неизвестны. Напишите алгоритм, с помощью которого Робот закрасит все клетки, примыкающие к сторонам прямоугольника, и вернётся в начальное положение. Для запоминания начального положения Робота введены две переменные: $$k_1$$ и $$k_2$$.
1) Сначала Робот должен дойти до конца стены, затем перейти в первую клетку над стеной и закрасить все клетки, примыкающие к стене сверху.
План действий:
- Найти конец стены.
- Встать на первую клетку над стеной.
- Закрасить все клетки, примыкающие к стене сверху.
2) Алгоритм сначала подводит Робота к правой стене, затем поднимает его до верхнего конца стены. После этого Робот закрашивает все клетки между стенами.
Результат: будут закрашены все клетки в прямоугольной области между двумя вертикальными стенами на уровне от верхнего конца стен до нижнего конца.
Укрупнённые шаги:
- Подойти к правой стене.
- Подняться по стене до верхнего её конца.
- Закрасить все клетки между стенами.
3) Нужно сначала перейти в крайнюю левую клетку, примыкающую к стене сверху, а затем двигаться вправо, закрашивая через одну клетку.
использовать Робот
алг
нач
нц пока снизу не свободно
влево
кц
вправо
нц пока снизу не свободно
закрасить
вправо; вправо
кц
кон
4) Чтобы закрасить все клетки у нижней стороны прямоугольника, Робот сначала должен дойти до левой нижней клетки, затем — до нижней стороны, после чего пройти вдоль неё, закрашивая клетки.
использовать Робот
алг
нач
нц пока слева свободно
влево
кц
нц пока снизу свободно
вниз
кц
нц пока справа свободно
закрасить; вправо
кц
закрасить
кон
5) Сначала Робот запоминает, на сколько клеток он сместился влево и вниз, затем закрашивает клетки у всех сторон прямоугольника и возвращается в исходное положение.
использовать Робот
алг
нач
цел k1, k2
k1:=0; k2:=0;
нц пока слева свободно
влево
k1:=k1+1
кц
нц пока снизу свободно
вниз
k2:=k2+1
кц
нц пока справа свободно
закрасить; вправо
кц
закрасить
нц пока сверху свободно
вверх; закрасить
кц
нц пока слева свободно
влево; закрасить
кц
нц пока снизу свободно
вниз; закрасить
кц
нц k1 раз
вправо
кц
нц k2 раз
вверх
кц
кон




