Присоединиться

9 класс·высокий уровень

Выберите ОДНО из предложенных ниже заданий: 15.1 или 15.2.

Условие

Выберите ОДНО из предложенных ниже заданий: 15.1 или 15.2. 15.1 Исполнитель Робот умеет перемещаться по лабиринту, начерченному на плоскости, разбитой на клетки. Между соседними (по сторонам) клетками может стоять стена, через которую Робот пройти не может. У Робота есть девять команд. Четыре команды — это команды-приказы:вверх вниз влево вправоПри выполнении любой из этих команд Робот перемещается на одну клетку соответственно: вверх ↑ вниз ↓, влево ← , вправо →. Если Робот получит команду передвижения сквозь стену, то он разрушится. Также у Робота есть команда закрасить, при которой закрашивается клетка, в которой Робот находится в настоящий момент.

Еще четыре команды — это команды проверки условий. Эти команды проверяют, свободен ли путь для Робота в каждом из четырех возможных направлений:сверху свободно снизу свободно слева свободно справа свободно

| Эти команды можно использовать вместе с условием «если», имеющим следующий вид: если условие топоследовательность командвсе Здесь условие — одна из команд проверки условия. Последовательность команд — это одна или несколько любых команд-приказов. Например, для передвижения на одну клетку вправо, если справа нет стенки, и закрашивания клетки можно использовать такой алгоритм:если справа свободно товправозакраситьвсе В одном условии можно использовать несколько команд проверки условий, применяя логические связки и, или, не, например: если (справа свободно) и (не снизу свободно) товправовсе Для повторения последовательности команд можно использовать цикл «пока», имеющий следующий вид: нц пока условиепоследовательность командкц Например, для движения вправо, пока это возможно, можно использовать следующий алгоритм: нц пока справа свободно вправокц Выполните задание. На бесконечном поле имеются две перпендикулярные друг другу стены, расположенные в виде буквы «Т», длины стен неизвестны. Робот находится в клетке, расположенной непосредственно над горизонтальной стеной. На рисунке указан один из возможных способов расположения стен и Робота (Робот обозначен буквой «Р»).

Рисунок к задаче

Напишите для Робота алгоритм, закрашивающий все клетки, расположенные непосредственно с правой стороны вертикальной стены. Робот должен закрасить только клетки, удовлетворяющие данному условию. Например, для приведенного справа рисунка Робот должен закрасить следующие клетки (см. рис.).

Рисунок к задаче

При исполнении алгоритма Робот не должен разрушиться, выполнение алгоритма должно завершиться. Конечное расположение Робота может быть произвольным. Алгоритм должен решать задачу для любого допустимого расположения стен и любого расположения и размера прохода внутри стены. Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе. 15.2 Напишите программу, которая в последовательности натуральных чисел определяет сумму всех чисел, кратных 3 и оканчивающихся на 9. Программа получает на вход натуральные числа, количество введенных чисел неизвестно, последовательность чисел заканчивается числом 0 (0 — признак окончания ввода, не входит в последовательность). Количество чисел не превышает 100. Введенные числа не превышают 300. Программа должна вывести одно число: сумму всех чисел, кратных 3 и оканчивающихся на 9. Пример работы программы: Входные данныеВыходные данные
16 29 56 9 39 048

Формат задания

Развёрнутый ответ: короткого ответа здесь нет — оценивается само рассуждение. Разбор откроется после входа.

Решение по шагам

  1. Как рассуждать

    Решение. 15.1 Команды исполнителя будем записывать жирным шрифтом, а комментарии, поясняющие алгоритм и не являющиеся его частью, —курсивом. Начало комментария будем обозначать символом «|».| Двигаемся вправо, пока не дойдем до конца горизонтальной стенынц пока не (снизу свободно)вправокц| Обходим стенувниз| Двигаемся влево, пока не дойдем до вертикальной стены нц пока (слева свободно)влевокц| Двигаемся вниз и закрашиваем клетки нц пока не (слева свободно)закраситьвнизкц Возможны и другие варианты решения. 15.2 Решением является программа, записанная на любом языке программирования. Пример верного решения, записанного на языке Паскаль:var a, s: integer;begin s:= 0; readln(a); while a<>0 do begin if (a mod 3 =

Осталось ещё 1 шаг

  1. | then s := s + a; readln(a); end…

Получить полное решение

Бесплатно · займёт минуту

Другие задачи по теме «Короткий алгоритм в различных средах исполнения»