Выберите ОДНО из предложенных ниже заданий: 15.1 или 15.2.
15.1 Исполнитель Робот умеет перемещаться по лабиринту, начерченному на плоскости, разбитой на клетки. Между соседними (по сторонам) клетками может стоять стена, через которую Робот пройти не может.
У Робота есть девять команд. Четыре команды — это команды-приказы:
вверх вниз влево вправо
При выполнении любой из этих команд Робот перемещается на одну клетку соответственно: вверх ↑ вниз ↓, влево ← , вправо →. Если Робот получит команду передвижения сквозь стену, то он разрушится.
Также у Робота есть команда закрасить, при которой закрашивается клетка, в которой Робот находится в настоящий момент.
Еще четыре команды — это команды проверки условий. Эти команды проверяют, свободен ли путь для Робота в каждом из четырех возможных направлений:
сверху свободно снизу свободно слева свободно справа свободно
Эти команды можно использовать вместе с условием «если», имеющим следующий вид:
если условие то
последовательность команд
все
Здесь условие — одна из команд проверки условия. Последовательность команд — это одна или несколько любых команд-приказов. Например, для передвижения на одну клетку вправо, если справа нет стенки, и закрашивания клетки можно использовать такой алгоритм:
если справа свободно то
вправо
закрасить
все
В одном условии можно использовать несколько команд проверки условий, применяя логические связки и, или, не, например:
если (справа свободно) и (не снизу свободно) то
вправо
все
Для повторения последовательности команд можно использовать цикл «пока», имеющий следующий вид:
нц пока условие
последовательность команд
кц
Например, для движения вправо, пока это возможно, можно использовать следующий алгоритм:
нц пока справа свободно
вправо
кц
[рис.]
Выполните задание.
На бесконечном поле имеется горизонтальная стена. Длина стены неизвестна. Робот находится сверху от стены в левом ее конце. На рисунке приведено расположение Робота относительно стены (Робот обозначен буквой «Р»).
Напишите для Робота алгоритм, закрашивающий все клетки, расположенные выше стены на расстоянии одной пустой клетки от стены, независимо от длины стены. Робот должен закрасить только клетки, удовлетворяющие данному условию. Например, для приведенного выше рисунка Робот должен закрасить следующие клетки (см. рис.).
[рис.]
Конечное расположение Робота может быть произвольным. При исполнении алгоритма Робот не должен разрушиться. Алгоритм должен решать задачу для произвольного размера поля и любого допустимого расположения стен.
Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе.
15.2 Напишите программу для решения следующей задачи. Девятиклассники участвовали в викторине по математике. Необходимо было ответить на 20 вопросов. Победителем викторины считается участник, правильно ответивший на наибольшее количество вопросов. На сколько вопросов победитель ответил правильно? Если есть участники викторины, которые не смогли дать правильный ответ ни на один из вопросов, выведите YES, иначе выведите NO. Гарантируется, что есть участники, правильно ответившие хотя бы на один из вопросов. Программа получает на вход число участников викторины N (1 ≤ N ≤ 50), затем для каждого участника вводится количество вопросов, на которые получен правильный ответ.
Пример работы программы:
Входные данные | Выходные данные
4
15
12
0
17 |
17
YES
15.1 Исполнитель Робот умеет перемещаться по лабиринту, начерченному на плоскости, разбитой на клетки. Между соседними (по сторонам) клетками может стоять стена, через которую Робот пройти не может.
У Робота есть девять команд. Четыре команды — это команды-приказы:
вверх вниз влево вправо
При выполнении любой из этих команд Робот перемещается на одну клетку соответственно: вверх ↑ вниз ↓, влево ← , вправо →. Если Робот получит команду передвижения сквозь стену, то он разрушится.
Также у Робота есть команда закрасить, при которой закрашивается клетка, в которой Робот находится в настоящий момент.
Еще четыре команды — это команды проверки условий. Эти команды проверяют, свободен ли путь для Робота в каждом из четырех возможных направлений:
сверху свободно снизу свободно слева свободно справа свободно
Эти команды можно использовать вместе с условием «если», имеющим следующий вид:
если условие то
последовательность команд
все
Здесь условие — одна из команд проверки условия. Последовательность команд — это одна или несколько любых команд-приказов. Например, для передвижения на одну клетку вправо, если справа нет стенки, и закрашивания клетки можно использовать такой алгоритм:
если справа свободно то
вправо
закрасить
все
В одном условии можно использовать несколько команд проверки условий, применяя логические связки и, или, не, например:
если (справа свободно) и (не снизу свободно) то
вправо
все
Для повторения последовательности команд можно использовать цикл «пока», имеющий следующий вид:
нц пока условие
последовательность команд
кц
Например, для движения вправо, пока это возможно, можно использовать следующий алгоритм:
нц пока справа свободно
вправо
кц
[рис.]
Выполните задание.
На бесконечном поле имеется горизонтальная стена. Длина стены неизвестна. Робот находится сверху от стены в левом ее конце. На рисунке приведено расположение Робота относительно стены (Робот обозначен буквой «Р»).
Напишите для Робота алгоритм, закрашивающий все клетки, расположенные выше стены на расстоянии одной пустой клетки от стены, независимо от длины стены. Робот должен закрасить только клетки, удовлетворяющие данному условию. Например, для приведенного выше рисунка Робот должен закрасить следующие клетки (см. рис.).
[рис.]
Конечное расположение Робота может быть произвольным. При исполнении алгоритма Робот не должен разрушиться. Алгоритм должен решать задачу для произвольного размера поля и любого допустимого расположения стен.
Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе.
15.2 Напишите программу для решения следующей задачи. Девятиклассники участвовали в викторине по математике. Необходимо было ответить на 20 вопросов. Победителем викторины считается участник, правильно ответивший на наибольшее количество вопросов. На сколько вопросов победитель ответил правильно? Если есть участники викторины, которые не смогли дать правильный ответ ни на один из вопросов, выведите YES, иначе выведите NO. Гарантируется, что есть участники, правильно ответившие хотя бы на один из вопросов. Программа получает на вход число участников викторины N (1 ≤ N ≤ 50), затем для каждого участника вводится количество вопросов, на которые получен правильный ответ.
Пример работы программы:
Входные данные | Выходные данные
4
15
12
0
17 |
17
YES
💡 Пошаговый разбор и решение:
15.1 Команды исполнителя будем записывать жирным шрифтом, а комментарии, поясняющие алгоритм и не являющиеся его частью, —курсивом. Начало комментария будем обозначать символом «|».
| Будем двигаться вправо вдоль стены, на каждом шаге закрашивая клетку сверху и передвигаясь вправо.
нц пока не снизу свободно
вверх
закрасить
вниз
вправо
кц
Возможны и другие варианты решения. Допускается использование иного синтаксиса инструкций исполнителя,
более привычного для учащихся. Допускается наличие отдельных синтаксических ошибок, не искажающих замысла автора решения.
15.2 Решением является программа, записанная на любом языке программирования. Пример верного решения, записанного на языке Паскаль:
var a, N, i, max, num: integer;
begin
max:=0;
num:=0;
readln(N);
for i:=1 to N do begin
readln(a);
if a > max then
max := a;
if a = 0 then
num := 1;
end;
writeln(max);
if num > 0 then
writeln(’YES’)
else writeln(’NO’);
end.
Приведем другое решение на языке Python.
maxi = 0
num = 0
n = int(input())
for i in range(n):
a = int(input())
if a > maxi: maxi = a
if a == 0: num = 1
print(maxi)
if num > 0:
print('YES')
else:
print('NO')
Возможны и другие варианты решения. Для проверки правильности работы программы необходимо использовать следующие тесты:
№ | Входные данные | Выходные данные
1 |
1
15 |
15
NO
2 |
2
17
10 |
17
NO
3 |
3
0
12
18 |
18
YES
4 |
3
0
16
0 |
16
YES
| Будем двигаться вправо вдоль стены, на каждом шаге закрашивая клетку сверху и передвигаясь вправо.
нц пока не снизу свободно
вверх
закрасить
вниз
вправо
кц
Возможны и другие варианты решения. Допускается использование иного синтаксиса инструкций исполнителя,
более привычного для учащихся. Допускается наличие отдельных синтаксических ошибок, не искажающих замысла автора решения.
15.2 Решением является программа, записанная на любом языке программирования. Пример верного решения, записанного на языке Паскаль:
var a, N, i, max, num: integer;
begin
max:=0;
num:=0;
readln(N);
for i:=1 to N do begin
readln(a);
if a > max then
max := a;
if a = 0 then
num := 1;
end;
writeln(max);
if num > 0 then
writeln(’YES’)
else writeln(’NO’);
end.
Приведем другое решение на языке Python.
maxi = 0
num = 0
n = int(input())
for i in range(n):
a = int(input())
if a > maxi: maxi = a
if a == 0: num = 1
print(maxi)
if num > 0:
print('YES')
else:
print('NO')
Возможны и другие варианты решения. Для проверки правильности работы программы необходимо использовать следующие тесты:
№ | Входные данные | Выходные данные
1 |
1
15 |
15
NO
2 |
2
17
10 |
17
NO
3 |
3
0
12
18 |
18
YES
4 |
3
0
16
0 |
16
YES
📚 Похожие разобранные задания по предмету:
ID 33023 • Задание №18
Робот стоит в левом верхнем углу прямоугольного поля, в каждой клетке которого записано целое число. В некотор...
ID 34451 • Задание №26
Системный администратор раз в неделю создаёт архив пользовательских файлов. Однако объём диска, куда он помеща...
Официальные критерии проверки ФИПИ:
Критерии проверки:
Критерии оценивания выполнения задания 15.1 | Баллы
Записан правильный алгоритм, не приводящий к уничтожению
Робота и полностью решающий поставленную задачу. Допускается использование иного синтаксиса инструкций исполнителя, более привычного учащимся. | 2
При всех допустимых исходных данных верно следующее:
1) выполнение алгоритма завершается, и при этом Робот не разбивается;
2) закрашено не более 10 лишних клеток;
3) остались незакрашенными не более 10 клеток из числа тех, которые должны были быть закрашены. | 1
Задание выполнено неверно, т. е. не выполнены условия,
позволяющие поставить 1 или 2 балла. | 0
Максимальный балл | 2
Критерии оценивания выполнения задания 15.2 | Баллы
Предложено верное решение. Программа правильно работает на
всех приведённых выше тестах. Допускается вывод ответов на вопросы в одной строке. Программа может быть записана на любом языке программирования. | 2
Программа выдаёт неверный ответ на одном или двух тестах, приведённых выше. Например, если в решении некорректно определяется наличие дней, когда температура опускалась ниже –15 градусов, программа выдаст неверный ответ на тесте №3:
18
YES
и тесте № 4:
16
YES
YES
ИЛИ
Программа выдаёт неверный ответ на всех тестах: на каждом тесте только на один из двух вопросов получен правильный ответ.
ИЛИ
Программа выдаёт неверный ответ на всех тестах: правильные ответы на вопросы выводятся в обратном порядке – сначала на второй вопрос, затем на первый. | 1
Программа выдаёт на тестах неверные ответы, отличные от описанных в критерии на 1 балла. | 0
Максимальный балл | 2
Критерии оценивания выполнения задания 15.1 | Баллы
Записан правильный алгоритм, не приводящий к уничтожению
Робота и полностью решающий поставленную задачу. Допускается использование иного синтаксиса инструкций исполнителя, более привычного учащимся. | 2
При всех допустимых исходных данных верно следующее:
1) выполнение алгоритма завершается, и при этом Робот не разбивается;
2) закрашено не более 10 лишних клеток;
3) остались незакрашенными не более 10 клеток из числа тех, которые должны были быть закрашены. | 1
Задание выполнено неверно, т. е. не выполнены условия,
позволяющие поставить 1 или 2 балла. | 0
Максимальный балл | 2
Критерии оценивания выполнения задания 15.2 | Баллы
Предложено верное решение. Программа правильно работает на
всех приведённых выше тестах. Допускается вывод ответов на вопросы в одной строке. Программа может быть записана на любом языке программирования. | 2
Программа выдаёт неверный ответ на одном или двух тестах, приведённых выше. Например, если в решении некорректно определяется наличие дней, когда температура опускалась ниже –15 градусов, программа выдаст неверный ответ на тесте №3:
18
YES
и тесте № 4:
16
YES
YES
ИЛИ
Программа выдаёт неверный ответ на всех тестах: на каждом тесте только на один из двух вопросов получен правильный ответ.
ИЛИ
Программа выдаёт неверный ответ на всех тестах: правильные ответы на вопросы выводятся в обратном порядке – сначала на второй вопрос, затем на первый. | 1
Программа выдаёт на тестах неверные ответы, отличные от описанных в критерии на 1 балла. | 0
Максимальный балл | 2
🔗 Другие задания линии №18 по предмету Информатика:
ID 140952
Выберите ОДНО из предложенных ниже заданий: 15.1 или 15.2.
15.1 Исполнитель Робот умеет переме...
ID 140953
Выберите ОДНО из предложенных ниже заданий: 15.1 или 15.2.
15.1 Исполнитель Робот умеет переме...
ID 140954
Выберите ОДНО из предложенных ниже заданий: 15.1 или 15.2.
Исполнитель Робот умеет перемещатьс...
ID 140955
Выберите ОДНО из предложенных ниже заданий: 15.1 или 15.2.
Исполнитель Робот умеет перемещатьс...
ID 140956
Исполнитель Робот умеет перемещаться по лабиринту, начерченному на плоскости, разбитой на клетк...