воскресенье, 9 апреля 2017 г.

КР_9 класс

Вариант 1


1. Ис­пол­ни­тель Му­ра­вей пе­ре­ме­ща­ет­ся по полю, раз­делённому на клет­ки. Раз­мер поля 8x8, стро­ки ну­ме­ру­ют­ся чис­ла­ми, столб­цы обо­зна­ча­ют­ся бук­ва­ми. Му­ра­вей может вы­пол­нять ко­ман­ды дви­же­ния:


Вверх N,
Вниз N,
Впра­во N,
Влево N

(где N — целое число от 1 до 7), пе­ре­ме­ща­ю­щие ис­пол­ни­те­ля на N кле­ток вверх, вниз, впра­во или влево со­от­вет­ствен­но.

За­пись


По­вто­ри k раз
Ко­ман­да1 Ко­ман­да2 Ко­ман­даЗ
Конец

озна­ча­ет, что по­сле­до­ва­тель­ность ко­манд Ко­ман­да1 Ко­ман­да2 Ко­ман­даЗ по­вто­рит­ся k раз. Если на пути Му­ра­вья встре­ча­ет­ся кубик с бук­вой, то он пе­ре­ме­ща­ет его по ходу дви­же­ния. Пусть, на­при­мер, кубик с бук­вой О на­хо­дит­ся в клет­ке Е6. Если Му­ра­вей вы­пол­нит ко­ман­ды впра­во 2 вверх 2, то сам ока­жет­ся в клет­ке Е7, а кубик с бук­вой О в клет­ке Е8.


Пусть Му­ра­вей и ку­би­ки рас­по­ло­же­ны так, как ука­за­но на ри­сун­ке. Му­ра­вью был дан для ис­пол­не­ния сле­ду­ю­щий ал­го­ритм:


Вниз 4
По­вто­ри 3 раз
Впра­во 1 вверх 1 влево 1
Конец

Какое слово будет на­пи­са­но в 6 стро­ке после вы­пол­не­ния этого ал­го­рит­ма?

1) КОМ
2) ЛОМ
3) ДОМ
4) ТОМ
2. В про­грам­ме «:=» обо­зна­ча­ет опе­ра­тор при­сва­и­ва­ния, знаки «+», «–», «*» и «/» – со­от­вет­ствен­но опе­ра­ции сло­же­ния, вы­чи­та­ния, умно­же­ния и де­ле­ния. Пра­ви­ла вы­пол­не­ния опе­ра­ций и по­ря­док дей­ствий со­от­вет­ству­ет пра­ви­лам ариф­ме­ти­ки.
Опре­де­ли­те зна­че­ние пе­ре­мен­ной а после ис­пол­не­ния дан­но­го ал­го­рит­ма.

a := 12
b := 8 + a / 2
a := a – b / 2

По­ря­док дей­ствий со­от­вет­ству­ет пра­ви­лам ариф­ме­ти­ки. В от­ве­те ука­жи­те одно число — зна­че­ние пе­ре­мен­ной а.
3. За­пи­ши­те зна­че­ние пе­ре­мен­ной s, по­лу­чен­ное в ре­зуль­та­те ра­бо­ты сле­ду­ю­щей про­грам­мы. Текст про­грам­мы при­ведён на трёх язы­ках про­грам­ми­ро­ва­ния.

Ал­го­рит­ми­че­ский языкБей­сикПас­каль
алгнач
цел s, k
s := 0
нц для k от 6 до 12
s := s + 10
кц
вывод s
кон
DIM k, s AS INTEGERs = 0
FOR к = 6 TO 12
s = s + 10
NEXT k
PRINT s
Var s,k: integer;
Begin
s := 0;
for k := 6 to 12 do
s := s + 10;
writeln(s);
End.
4. В таб­ли­це Dat пред­став­ле­ны дан­ные о ко­ли­че­стве го­ло­сов, по­дан­ных за 10 ис­пол­ни­те­лей на­род­ных песен (Dat[1] — ко­ли­че­ство го­ло­сов, по­дан­ных за пер­во­го ис­пол­ни­те­ля, Dat[2] — за вто­ро­го и т. д.). Опре­де­ли­те, какое число будет на­пе­ча­та­но в ре­зуль­та­те ра­бо­ты сле­ду­ю­щей про­грам­мы. Текст про­грам­мы при­ведён на трёх язы­ках про­грам­ми­ро­ва­ния.

Ал­го­рит­ми­че­ский языкБей­сикПас­каль
алгнач
цел­таб Dat[1:10]
цел к, m
Dat[1] := 56
Dat[2] := 70
Dat[3] := 20
Dat[4] := 41
Dat[5] := 14
Dat[6] := 22
Dat[7] := 30
Dat[8] := 12
Dat[9] := 65
Dat[10] := 35
m := 0
нц для к от 1 до 10
если Dat[к] > 25 то
m : = m+1
все
КЦ
вывод m
КОН
DIM Dat(10) AS INTEGER
DIM k,m AS INTEGER
Dat(1) = 56: Dat(2) = 70
Dat(3) = 20: Dat(4) = 41
Dat(5) = 14: Dat(6) = 22
Dat(7) = 30: Dat(8) = 12
Dat(9) = 65: Dat(10) = 35
m = 0
FOR k := 1 TO 10
IF Dat(k) > 25 THEN
m =m+1
ENDIF
NEXT k
PRINT m
Var k, m: integer;
Dat: array[1...10] of integer;
Begin
Dat[1] := 56; Dat[2] := 70;
Dat[3] := 20; Dat[4] := 41;
Dat[5] := 14; Dat[6] := 22;
Dat[7] := 30; Dat[8] := 12;
Dat[9] := 65; Dat[10] := 35;
m := 0;
for k := 1 to 10 do
if Dat[k] > 25 then
begin
m := m+1
end;
writeln(m);
End.
5. У ис­пол­ни­те­ля Де­ли­тель две ко­ман­ды, ко­то­рым при­сво­е­ны но­ме­ра:

1. раз­де­ли на 2
2. при­бавь 1

Пер­вая из них умень­ша­ет число на экра­не в 2 раза, вто­рая уве­ли­чи­ва­ет его на 1. Ис­пол­ни­тель ра­бо­та­ет толь­ко с на­ту­раль­ны­ми чис­ла­ми. Со­ставь­те ал­го­ритм по­лу­че­ния из числа 89 числа 24, со­дер­жа­щий не более 5 ко­манд. В от­ве­те за­пи­ши­те толь­ко но­ме­ра ко­манд. (На­при­мер, 21121 — это ал­го­ритм: при­бавь 1, раз­де­ли на 2, раз­де­ли на 2, при­бавь 1, раз­де­ли на 2, ко­то­рый пре­об­ра­зу­ет число 75 в 10.) Если таких ал­го­рит­мов более од­но­го, то за­пи­ши­те любой из них.
6. Ав­то­мат по­лу­ча­ет на вход четырёхзнач­ное де­ся­тич­ное число. По по­лу­чен­но­му числу стро­ит­ся новое де­ся­тич­ное число по сле­ду­ю­щим пра­ви­лам.
1. Вы­чис­ля­ют­ся два числа — сумма пер­вой и вто­рой цифр и сумма тре­тьей и чет­вер­той цифр за­дан­но­го числа.
2. По­лу­чен­ные два числа за­пи­сы­ва­ют­ся друг за дру­гом в по­ряд­ке не­убы­ва­ния (без раз­де­ли­те­лей).


При­мер. Ис­ход­ное число: 2177. По­раз­ряд­ные суммы: 3, 14. Ре­зуль­тат: 314.

Опре­де­ли­те, сколь­ко из при­ведённых ниже чисел может по­лу­чить­ся в ре­зуль­та­те ра­бо­ты ав­то­ма­та.

1915 10 110 1516 1211 316 1519 116 1515

В от­ве­те за­пи­ши­те толь­ко ко­ли­че­ство чисел.
7. Вы­бе­ри­те ОДНО из пред­ло­жен­ных ниже за­да­ний: 20.1 или 20.2.

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

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

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

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

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

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

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


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

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


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

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

Вход­ные дан­ныеВы­ход­ные дан­ные
3
13
23
24
36

2 Вариант

1. Ис­пол­ни­тель Че­ре­паш­ка пе­ре­ме­ща­ет­ся на экра­не ком­пью­те­ра, остав­ляя след в виде линии. В каж­дый кон­крет­ный мо­мент из­вест­но по­ло­же­ние ис­пол­ни­те­ля и на­прав­ле­ние его дви­же­ния. У ис­пол­ни­те­ля су­ще­ству­ет две ко­ман­ды: Вперёд n (где n — целое число), вы­зы­ва­ю­щая пе­ре­дви­же­ние Че­ре­паш­ки на n шагов в на­прав­ле­нии дви­же­ния; На­пра­во m (где m — целое число), вы­зы­ва­ю­щая из­ме­не­ние на­прав­ле­ния дви­же­ния на m гра­ду­сов по ча­со­вой стрел­ке. За­пись По­вто­ри k [Ко­ман­да1 Ко­ман­да2 Ко­ман­даЗ] озна­ча­ет, что по­сле­до­ва­тель­ность ко­манд в скоб­ках по­вто­рит­ся k раз.

Че­ре­паш­ке был дан для ис­пол­не­ния сле­ду­ю­щий ал­го­ритм: По­вто­ри 5 [Вперёд 100 На­пра­во 120] Какая фи­гу­ра по­явит­ся на экра­не?

1) пра­виль­ный пя­ти­уголь­ник
2) не­за­мкну­тая ло­ма­ная линия
3) пра­виль­ный ше­сти­уголь­ник
4) пра­виль­ный тре­уголь­ник
2. В про­грам­ме «:=» обо­зна­ча­ет опе­ра­тор при­сва­и­ва­ния, знаки «+», «–», «*» и «/» – со­от­вет­ствен­но опе­ра­ции сло­же­ния, вы­чи­та­ния, умно­же­ния и де­ле­ния. Пра­ви­ла вы­пол­не­ния опе­ра­ций и по­ря­док дей­ствий со­от­вет­ству­ют пра­ви­лам ариф­ме­ти­ки.

Опре­де­ли­те зна­че­ние пе­ре­мен­ной a после вы­пол­не­ния ал­го­рит­ма:
a := 4
b := 6
a := ( a / 2 ) * ( b / 2 )
a := 2 * a + b

В от­ве­те ука­жи­те одно целое число — зна­че­ние пе­ре­мен­ной a.
3. За­пи­ши­те зна­че­ние пе­ре­мен­ной s, по­лу­чен­ное в ре­зуль­та­те ра­бо­ты сле­ду­ю­щей про­грам­мы. Текст про­грам­мы при­ведён на трёх язы­ках про­грам­ми­ро­ва­ния.

Ал­го­рит­ми­че­ский языкБей­сикПас­каль
алгнач
цел s, k
s := 0
нц для k от 7 до 11
s := s + 11
кц
вывод s
кон
DIM k, s AS INTEGERs = 0
FOR к = 7 TO 11
s = s + 11
NEXT k
PRINT s
Var s,k: integer;
Begin
s := 0;
for k := 7 to 11 do
s := s + 11;
writeln(s);
End.

4. Школь­ник делал ла­бо­ра­тор­ную ра­бо­ту по фи­зи­ке, в ходе ко­то­рой из­ме­рил 10 раз силу тока и за­пи­сал по­ка­за­ния ам­пер­мет­ра в таб­ли­цу Tok (Tok[1] — ре­зуль­тат пер­во­го из­ме­ре­ния, Tok[2] — вто­ро­го и т. д.). Опре­де­ли­те, какое число будет на­пе­ча­та­но в ре­зуль­та­те ра­бо­ты сле­ду­ю­щей про­грам­мы. Текст про­грам­мы при­ведён на трёх язы­ках про­грам­ми­ро­ва­ния.

Ал­го­рит­ми­че­ский языкБей­сикПас­каль
алгнач
цел­таб Tok[1:10]
цел k, m
Tok[1] := 10; Tok[2] := 14
Tok[3] := 15; Tok[4] := 4
Tok[5] := 12; Tok[6] := 6
Tok[7] := 3; Tok[8] := 5
Tok[9] := 5; Tok[10] := 10
m := 0
нц для k от 1 до 10
если Tok[k] > 6 то
m := m + 2
все
кц
вывод m
кон
DIM Tok(10) AS INTEGER
DIM k,m AS INTEGER
Tok(1)= 10: Tok(2)= 14
Tok(3)= 15: Tok(4) = 4
Tok(5)= 12: Tok(6)= 6
Tok(7)= 3: Tok(8)= 5
Tok(9)= 5: Tok(10)= 10
m = 0
FOR k = 1 TO 10
IF Tok(k) > 6 THEN
m = m + 2
END IF
NEXT k
PRINT m
Var k, m: integer;
Tok: array[1..10] of integer;
Begin
Tok[1] := 10; Tok[2] := 14;
Tok[3] := 15; Tok[4] := 4;
Tok[5] := 12; Tok[6] := 6;
Tok[7] := 3; Tok[8] := 5;
Tok[9] := 5; Tok[10] := 10;
m := 0;
For k := 1 to 10 Do
If Tok[k] > 6 Then
Begin
m := m + 2;
End;
Writeln(m);
End.
5. У ис­пол­ни­те­ля Умно­жа­тель две ко­ман­ды, ко­то­рым при­сво­е­ны но­ме­ра:


1. умножь на 3
2. при­бавь 2

Пер­вая из них умно­жа­ет число на 3, вто­рая — при­бав­ля­ет к числу 2. Со­ставь­те ал­го­ритм по­лу­че­ния из числа 2 числа 58, со­дер­жа­щий не более 5 ко­манд. В от­ве­те за­пи­ши­те толь­ко но­ме­ра ко­манд.

(На­при­мер, 21122 — это ал­го­ритм:
при­бавь 2
умножь на 3
умножь на 3
при­бавь 2
при­бавь 2,
ко­то­рый пре­об­ра­зу­ет число 1 в 31).

Если таких ал­го­рит­мов более од­но­го, то за­пи­ши­те любой из них.
6. Не­ко­то­рый ал­го­ритм из одной це­поч­ки сим­во­лов по­лу­ча­ет новую це­поч­ку сле­ду­ю­щим об­ра­зом. Сна­ча­ла вы­чис­ля­ет­ся длина ис­ход­ной це­поч­ки сим­во­лов; если она чётна, то уда­ля­ет­ся по­след­ний сим­вол це­поч­ки, а если нечётна, то в на­ча­ло це­поч­ки до­бав­ля­ет­ся сим­вол С. В по­лу­чен­ной це­поч­ке сим­во­лов каж­дая буква за­ме­ня­ет­ся бук­вой, сле­ду­ю­щей за ней в рус­ском ал­фа­ви­те (А — на Б, Б — на В и т. д., а Я — на А). По­лу­чив­ша­я­ся таким об­ра­зом це­поч­ка яв­ля­ет­ся ре­зуль­та­том ра­бо­ты ал­го­рит­ма.
На­при­мер, если ис­ход­ной была це­поч­ка НОГА, то ре­зуль­та­том ра­бо­ты ал­го­рит­ма будет це­поч­ка ОПД, а если ис­ход­ной была це­поч­ка ТОН, то ре­зуль­та­том ра­бо­ты ал­го­рит­ма будет це­поч­ка ТУПО.
Дана це­поч­ка сим­во­лов ПЛОТ. Какая це­поч­ка сим­во­лов по­лу­чит­ся, если к дан­ной це­поч­ке при­ме­нить опи­сан­ный ал­го­ритм два­жды (т. е. при­ме­нить ал­го­ритм к дан­ной це­поч­ке, а затем к ре­зуль­та­ту вновь при­ме­нить ал­го­ритм)? Рус­ский ал­фа­вит: АБВ­ГДЕЁЖЗИЙ­КЛМ­НОПР­СТУ­ФХ­ЦЧ­Ш­ЩЪ­Ы­Ь­Э­ЮЯ.
7. Вы­бе­ри­те ОДНО из пред­ло­жен­ных ниже за­да­ний: 20.1 или 20.2.

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

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

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

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

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

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

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


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

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


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

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

Вход­ные дан­ныеВы­ход­ные дан­ные
3
13
23
3
23

Комментариев нет:

Отправить комментарий