СДАМ ГИА: РЕШУ ОГЭ
Образовательный портал для подготовки к экзаменам
Информатика
информатика
сайты - меню - вход - новости




Задания
Версия для печати и копирования в MS Word
Задание 20 № 721

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

 

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

У Ро­бо­та есть де­вять команд. Че­ты­ре команды — это команды-приказы:

 

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

 

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

Также у Ро­бо­та есть ко­ман­да закрасить, при ко­то­рой закрашивается клетка, в ко­то­рой Робот на­хо­дит­ся в на­сто­я­щий момент.

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

 

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

 

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

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

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

все

 

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

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

вправо

закрасить

все

 

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

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

вправо

все

 

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

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

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

кц

 

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

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

вправо

кц

 

 

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

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

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

При ис­пол­не­нии ал­го­рит­ма Робот не дол­жен разрушиться, вы­пол­не­ние алгоритма долж­но завершиться. Ко­неч­ное расположение Ро­бо­та может быть произвольным. Ал­го­ритм должен ре­шать задачу для лю­бо­го допустимого рас­по­ло­же­ния стен и лю­бо­го расположения и раз­ме­ра прохода внут­ри стены. Ал­го­ритм может быть вы­пол­нен в среде фор­маль­но­го ис­пол­ни­те­ля или за­пи­сан в тек­сто­вом редакторе. Со­хра­ни­те ал­го­ритм в тек­сто­вом файле.

 

 

20.2 На­пи­ши­те программу, ко­то­рая в по­сле­до­ва­тель­но­сти на­ту­раль­ных чисел опре­де­ля­ет ми­ни­маль­ное число, окан­чи­ва­ю­ще­е­ся на 4. Про­грам­ма получает на вход ко­ли­че­ство чисел в последовательности, а затем сами числа. В по­сле­до­ва­тель­но­сти всегда име­ет­ся число, окан­чи­ва­ю­ще­е­ся на 4. Ко­ли­че­ство чисел не пре­вы­ша­ет 1000. Введённые числа не пре­вы­ша­ют 30 000. Про­грам­ма долж­на вы­ве­сти одно число — ми­ни­маль­ное число, окан­чи­ва­ю­ще­е­ся на 4.

 

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

 

Входные данныеВыходные данные
3
24
14
34
14

Решение.

20.1 Команды ис­пол­ни­те­ля — жир­ным шрифтом, ком­мен­та­рии — курсивом. На­ча­ло ком­мен­та­рия — символ«|».

 

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

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

влево

кц

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

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

закрасить

вверх

кц

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

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

вверх

кц

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

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

закрасить

вверх

кц

|Обходим стену

влево

вниз

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

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

закрасить

вниз

кц

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

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

вниз

кц

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

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

закрасить

вниз

кц

 

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

Допускается ис­поль­зо­ва­ние иного син­так­си­са инструкций исполнителя, более при­выч­но­го для учащихся.

Допускается на­ли­чие от­дель­ных син­так­си­че­ских ошибок, не ис­ка­жа­ю­щих замысла ав­то­ра решения

 

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

 

var n,i,a,min: integer;

begin

readln(n);

min := 30001;

for i := 1 to n do

begin

readln(a);

if (a mod 10 = 4) and (a < min)

then min := a;

end;

writeln(min)

end.

 

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

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

 

Входные данныеВыходные данные
1

3

2

4

19

4
2

3

14

24

44

14
3

3

24

44

4

4
Источник: Демонстрационная вер­сия ГИА—2014 по информатике.