
Выберите ОДНО из предложенных ниже заданий: 15.1 или 15.2.
15.1 Исполнитель Робот умеет перемещаться по лабиринту, начерченному на плоскости, разбитой на клетки. Между соседними (по сторонам) клетками может стоять стена, через которую Робот пройти не может. У Робота есть девять команд. Четыре команды — это команды-приказы:
вверх вниз влево вправо
При выполнении любой из этих команд Робот перемещается на одну клетку соответственно: вверх ↑, вниз ↓, влево ←, вправо →. Если Робот получит команду передвижения сквозь стену, то он разрушится.
Также у Робота есть команда закрасить, при которой закрашивается клетка, в которой Робот находится в настоящий момент.
Ещё четыре команды — это команды проверки условий. Эти команды проверяют, свободен ли путь для Робота в каждом из четырёх возможных направлений:
сверху свободно снизу свободно слева свободно справа свободно
Эти команды можно использовать вместе с условием «eсли», имеющим следующий вид:
если условие то
последовательность команд
все
Здесь условие — одна из команд проверки условия. Последовательность команд — это одна или несколько любых команд-приказов. Например, для передвижения на одну клетку вправо, если справа нет стенки и закрашивания клетки, можно использовать такой алгоритм:
если справа свободно то
вправо
закрасить
все
В одном условии можно использовать несколько команд проверки условий, применяя логические связки и, или, не, например:
если (справа свободно) и (не снизу свободно) то
вправо
все
Для повторения последовательности команд можно использовать цикл «пока», имеющий следующий вид:
нц пока условие
последовательность команд
кц
Например, для движения вправо, пока это возможно, можно использовать следующий алгоритм:
нц пока справа свободно
вправо
кц
Выполните задание
Робот находится в произвольной клетке узкого вертикального коридора. Ширина коридора — одна клетка, длина коридора может быть произвольной. Точное положение Робота также неизвестно. Возможный вариант начального расположения Робота приведён на рисунке (Робот обозначен буквой «Р»):
Напишите для Робота алгоритм, закрашивающий все клетки внутри коридора.
Конечное положение Робота может быть произвольным. Например, для приведённого выше рисунка робот должен закрасить следующие клетки (см. рис.):
Алгоритм должен решать задачу для произвольного конечного размера коридора и произвольного начального расположения Робота. При исполнении алгоритма Робот не должен разрушиться. Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе. Сохраните алгоритм в формате программы Кумир или в текстовом файле. Название файла и каталог для сохранения Вам сообщат организаторы экзамена.
15.2. Напишите программу, которая в последовательности целых чисел определяет количество чисел, кратных 5 или 9. Программа получает на вход целые числа, количество введённых чисел неизвестно, последовательность чисел заканчивается числом 0 (0 — признак окончания ввода, не входит в последовательность). Количество чисел не превышает 1000. Введённые числа по модулю не превышают 30 000. Программа должна вывести одно число: количество чисел, кратных 5 или 9. Пример работы программы: Входные данные Выходные данные 15 2
91
90
0
15.1 Следующий алгоритм выполнит требуемую задачу.
нц
пока сверху свободно
вверх
кц
нц пока снизу свободно
закрасить
вниз
кц
закрасить
15.2. Вариант решения на языке Паскаль.
vara, count: integer;
begin
count := 0;
readln(a);
while a <> 0 do begin
if (a mod 5 = 0) or (a mod 9 = 0) then count := count + 1;
readln(a);
end;
writeln(count);
end.
Приведём другое решение на языке Python.
count = 0
a = 1
while a != 0:
a = int(input())
if a == 0:
break
if a % 5 == 0 or a % 9 == 0:
count += 1
print(count)