информатика
сайты - меню - вход - новости




Школа экспертов
Вернуться на основную страницу «Школы экспертов»

Ниже представлены ученические решения экзаменационных заданий. Оцените каждое из них в соответствии с критериями проверки заданий ЕГЭ. После нажатия кнопки «Проверить» вы узнаете правильный балл за каждое из решений. В конце будут подведены итоги.

Задание 1683


Задание № 1683

20.1 Ис­пол­ни­тель Робот умеет пе­ре­ме­щать­ся по лабиринту, на­чер­чен­но­му на плоскости, раз­би­той на клетки. Между со­сед­ни­ми (по сторонам) клет­ка­ми может сто­ять стена, через ко­то­рую Робот прой­ти не может. У Ро­бо­та есть де­вять команд. Че­ты­ре команды — это команды-приказы:

 

вверх вниз влево вправо

 

При вы­пол­не­нии любой из этих ко­манд Робот пе­ре­ме­ща­ет­ся на одну клет­ку соответственно: вверх ↑ вниз ↓, влево ←, впра­во →. Если Робот по­лу­чит ко­ман­ду пе­ре­дви­же­ния сквозь стену, то он разрушится. Также у Ро­бо­та есть ко­ман­да закрасить, при ко­то­рой за­кра­ши­ва­ет­ся клетка, в ко­то­рой Робот на­хо­дит­ся в на­сто­я­щий момент.

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

 

сверху свободно  снизу свободно  слева свободно  спра­ва свободно

 

Эти ко­ман­ды можно ис­поль­зо­вать вме­сте с усло­ви­ем «если», име­ю­щим сле­ду­ю­щий вид:

если условие то

последовательность команд

все

 

Здесь условие — одна из ко­манд про­вер­ки условия. Последовательность команд — это одна или не­сколь­ко любых команд-приказов. Например, для пе­ре­дви­же­ния на одну клет­ку вправо, если спра­ва нет стенки, и за­кра­ши­ва­ния клет­ки можно ис­поль­зо­вать такой алгоритм:

если спра­ва сво­бод­но то

вправо

закрасить

все

 

В одном усло­вии можно ис­поль­зо­вать не­сколь­ко ко­манд про­вер­ки условий, при­ме­няя ло­ги­че­ские связ­ки и, или, не, например:

если (справа свободно) и (не снизу свободно) то

вправо

все

 

Для по­вто­ре­ния по­сле­до­ва­тель­но­сти ко­манд можно ис­поль­зо­вать цикл «пока», име­ю­щий сле­ду­ю­щий вид:

нц пока условие

последовательность команд

кц

 

Например, для дви­же­ния вправо, пока это возможно, можно ис­поль­зо­вать сле­ду­ю­щий алгоритм:

нц пока спра­ва сво­бод­но

вправо

кц

 

Выполните задание.

На бесконечном поле есть горизонтальная и вертикальная стены. Левый конец горизонтальной стены соединён с нижним концом вертикальной стены. Длины стен неизвестны. В каждой стене есть ровно один проход неизвестной длины. Робот находится в клетке, расположенной непосредственно над горизонтальной стеной у её правого конца.

На рисунке указан один из возможных способов расположения стен и Робота (Робот обозначен буквой «Р»).

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

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

При исполнении алгоритма Робот не должен разрушиться, выполнение алгоритма должно завершиться. Конечное расположение Робота может быть произвольным.

Алгоритм должен решать задачу для любого допустимого расположения стен и любого расположения и размера проходов внутри стен.

Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе.

 

20.2

Напишите программу, которая в последовательности натуральных чисел определяет сумму чисел, кратных 6 и не кратных 7. Программа получает на вход количество чисел в последовательности, а затем сами числа.

В последовательности всегда имеется число, кратное 6 и не кратное 7.

Количество чисел не превышает 1000. Введённые числа не превышают 30 000.

Программа должна вывести одно число: сумму чисел, кратных 6, но не кратных 7.

 

Пример ра­бо­ты программы:

 

Входные данныеВыходные данные
3
10
25
6
18

Пояснение

20.1 Команды исполнителя будем записывать жирным шрифтом, а комментарии, поясняющие алгоритм и не являющиеся его частью, – курсивом. Начало комментария будем обозначать символом «|».

| Пропускаем клетку, в которой стоит Робот

влево

|Двигаемся влево, пока не дойдём до прохода в горизонтальной стене и закрашиваем клетки

нц пока не снизу свободно

закрасить

влево

кц

|Двигаемся дальше до горизонтальной стены

нц пока снизу свободно

влево

кц

|Двигаемся влево, пока не дойдём до вертикальной стены и закрашиваем клетки

нц пока слева свободно

закрасить

влево

кц

|Двигаемся вверх, пока не дойдём до прохода в вертикальной стене

и закрашиваем клетки

нц пока не слева свободно

закрасить

вверх

кц

|Двигаемся дальше до вертикальной стены

нц пока слева свободно

вверх

кц

|Двигаемся вверх до конца вертикальной стены и закрашиваем клетки

нц пока не слева свободно

закрасить

вверх

кц

Возможны и другие варианты решения

 

20.2

Решением является программа, записанная на любом языке программирования. Пример верного решения, записанного на языке Паскаль:

var n,i,a,s: integer;

begin

readln(n);

s := 0;

for i := 1 to n do

begin

readln(a);

if (a mod 6 = 0) and (a mod 7 <> 0) then s:=s + a;

end;

writeln(s)

end.

Возможны и другие варианты решения.

Для проверки правильности работы программы необходимо использовать следующие тесты:

 

Входные данныеВыходные данные
1 3
6
42
8
6
2 4
42
12
6
18
36
3 4
36
6
66
42
108


Критерии оце­ни­ва­ния вы­пол­не­ния за­да­ния 20.1Баллы
Алгоритм пра­виль­но ра­бо­та­ет при всех до­пу­сти­мых ис­ход­ных данных2
При всех до­пу­сти­мых ис­ход­ных дан­ных верно следующее:

1) вы­пол­не­ние ал­го­рит­ма завершается, и при этом Робот не разбивается;

2) за­кра­ше­но не более 10 лиш­них клеток;

3) оста­лись не­за­кра­шен­ны­ми не более 10 кле­ток из числа тех, ко­то­рые долж­ны были быть закрашены

1
Задание вы­пол­не­но неверно, т. е. не вы­пол­не­ны условия, поз­во­ля­ю­щие по­ста­вить 1 или 2 балла0
Максимальный балл2

 

Критерии оце­ни­ва­ния вы­пол­не­ния за­да­ния 20.2Баллы
Предложено вер­ное решение. Про­грам­ма пра­виль­но ра­бо­та­ет на всех приведённых выше тестах. Про­грам­ма может быть за­пи­са­на на любом языке программирования2
Программа выдаёт не­вер­ный ответ на одном из тестов, приведённых выше1
Программа выдаёт на те­стах не­вер­ные ответы, от­лич­ные от опи­сан­ных в кри­те­рии на 1 балл0
Максимальный балл2


Пример 1.

20.1

алг

нач

нц пока не снизу свободно

влево

закрасить

кц

нц пока снизу свободно

влево

кц

нц пока слева свободно

закрасить

влево

кц

нц пока не слева свободно

закрасить

вверх

кц

нц пока слева свободно

вверх

кц

нц пока не слева свободно

закрасить

вверх

кц

кон

Оцените это решение в баллах:

Пример 2.

20.2

var n,i,a,s: integer;

begin

readln(n);

s := 1;

for i := 1 to n do

begin

readln(a);

if (a mod 6 = 0) and (a mod 7 > 0) then s:=s + a;

end;

writeln(s)

end.

Оцените это решение в баллах:

Пример 3.

20.1

алг

нач

влево

нц пока не снизу свободно

закрасить

влево

кц

нц пока снизу свободно

влево

кц

нц пока слева свободно

закрасить

влево

кц

нц пока не слева свободно

закрасить

вверх

кц

нц пока слева свободно

вверх

кц

нц пока сверху свободно

закрасить

вверх

кц

кон

Оцените это решение в баллах:

Пример 4.

20.2

алг

нач

цел n, i, a, m

ввод n

m := 0

нц для i от 1 до n

ввод a

если (mod(a,6)=0 и mod(a,7)<>0)

то m := m + a

все

кц

вывод m

кон

Оцените это решение в баллах:

Пример 5

20.1

алг

нач

влево

нц пока слева свободно

закрасить

влево

кц

нц пока не слева свободно

закрасить

вверх

кц

нц пока слева свободно

вверх

кц

нц пока не слева свободно

закрасить

вверх

кц

кон

Оцените это решение в баллах:

Пример 6.

20.2

алг

нач

цел n, i, a, s

ввод n

s := 0

нц для i от 1 до n

ввод a

если не (mod(a,6)>0 или mod(a,7)=0)

то s := s + a

все

кц

вывод s

кон

Оцените это решение в баллах:



Наверх
Вернуться на основную страницу «Школы экспертов»