1 Вариант.
1. Мальчики, играя в пиратов, придумали свой собственный шифр и передавали с помощью него друг другу сообщения. Ниже представлено одно из них. В сообщении присутствуют только буквы из приведённого фрагмента кодовой таблицы.
П | И | Р | А | Т |
---|---|---|---|---|
!!? | !! | !? | ??? | ?! |
Определите, какое сообщение закодировано в строчке !?!!?!???. В ответе запишите последовательность букв без запятых и других знаков препинания.
2. В программе «:=» обозначает оператор присваивания, знаки «+», «–», «*» и «/» – соответственно операции сложения, вычитания, умножения и деления. Правила выполнения операций и порядок действий соответствует правилам арифметики.
Определите значение переменной b после выполнения алгоритма:
a := 4
b := 15
a := b-a*3
b := 24/a*4
В ответе укажите одно целое число — значение переменной b.
3. Запишите значение переменной s, полученное в результате работы следующей программы. Текст программы приведён на трёх языках программирования.
Алгоритмический язык | Бейсик | Паскаль |
---|---|---|
алгнач цел s, i s := 3 нц для i от 2 до 5 s := s + 2*i кц вывод s кон | DIM i, s AS INTEGERs = 3
FOR i = 2 TO 5
s = s + 2*i
NEXT i
PRINT s
| Var s, i: integer;
Begin
s := 3;
For i := 2 to 5 do
s := s + 2*i;
Writeln(s);
End.
|
4. В таблице Dat хранятся оценки (по десятибалльной шкале) студента по программированию за 8 прошедших с начала учёбы семестров (Dat[1] — оценка за первый семестр, Dat[2] — за второй и т. д.). Определите, что будет напечатано в результате выполнения следующего алгоритма, записанного на трёх алгоритмических языках.
Алгоритмический язык | Бейсик | Паскаль |
---|---|---|
алгнач
целтаб Dat[1:8] цел к, m, term
Dat[1] := 7
Dat[2] := 7
Dat[3] := 6
Dat[4] := 8
Dat[5] := 4
Dat[6] := 5
Dat[7] := 8
Dat[8] := 7
term:=1; m := Dat[1]нц для к от 2 до 8 если Dat[к] > m то m:= Dat[k] term := k все
КЦ
вывод term
КОН
|
DIM Dat(8) AS INTEGER
Dat[1] = 7
Dat[2] = 7
Dat[3] = 6
Dat[4] = 8
Dat[5] = 4
Dat[6] = 5
Dat[7] = 8
Dat[8] = 7
term = 1: m = Dat(1)
FOR k = 2 TO 8
IF Dat(k) > m THEN
m = Dat(k)term = k
END IF
NEXT k
PRINT term
END
|
Var k, m, term: integer;
Dat: array[1..8] of integer;
Begin
Dat[1] := 7;
Dat[2] := 7;
Dat[3] := 6;
Dat[4] := 8;
Dat[5] := 4;
Dat[6] := 5;
Dat[7] := 8;
Dat[8] := 7;
term:=1; m := Dat[1];for k := 2 to 8 do if Dat[k] > m then begin m:= Dat[k]; term := k; end; write(term);
End.
|
5. Некоторый алгоритм из одной цепочки символов получает новую цепочку следующим образом. Сначала вычисляется длина исходной цепочки символов; если она чётна, то в начало цепочки символов добавляется цифра 1, а если нечётна, то средний символ цепочки удаляется. В полученной цепочке символов каждая цифра заменяется следующей за ней цифрой (1 — на 2, 2 — на 3 и т. д., а 9 — на 0). Получившаяся таким образом цепочка является результатом работы алгоритма.
Например, если исходной была цепочка 2ВМ, то результатом работы алгоритма будет цепочка 3М, а если исходной была цепочка П9, то результатом работы алгоритма будет цепочка 2П0.
Дана цепочка символов ГИА13. Какая цепочка символов получится, если к данной цепочке применить описанный алгоритм дважды (т. е. применить алгоритм к данной цепочке, а затем к результату вновь применить алгоритм)?
6. Выберите ОДНО из предложенных ниже заданий: 20.1 или 20.2.
20.1 Исполнитель Робот умеет перемещаться по лабиринту, начерченному на плоскости, разбитой на клетки. Между соседними (по сторонам) клетками может стоять стена, через которую Робот пройти не может. У Робота есть девять команд. Четыре команды — это команды-приказы:
При выполнении любой из этих команд Робот перемещается на одну клетку соответственно: вверх ↑ вниз ↓, влево ← , вправо →. Если Робот получит команду передвижения сквозь стену, то он разрушится. Также у Робота есть команда закрасить, при которой закрашивается клетка, в которой Робот находится в настоящий момент.
Ещё четыре команды — это команды проверки условий. Эти команды проверяют, свободен ли путь для Робота в каждом из четырёх возможных направлений:
Эти команды можно использовать вместе с условием «если», имеющим следующий вид:
если условие топоследовательность команд
все
Здесь условие — одна из команд проверки условия. Последовательность команд — это одна или несколько любых команд-приказов. Например, для передвижения на одну клетку вправо, если справа нет стенки, и закрашивания клетки можно использовать такой алгоритм:
если справа свободно товправо
закрасить
все
В одном условии можно использовать несколько команд проверки условий, применяя логические связки и, или, не, например:
если (справа свободно) и (не снизу свободно) товправо
все
Для повторения последовательности команд можно использовать цикл «пока», имеющий следующий вид:
нц пока условиепоследовательность команд
кц
Например, для движения вправо, пока это возможно, можно использовать следующий алгоритм:
нц пока справа свободновправо
кц
Выполните задание.
На бесконечном поле имеются 4 стены, расположенные в форме прямоугольника. Длины вертикальных и горизонтальных стен неизвестны. Робот находится в клетке, расположенной в левом верхнем углу прямоугольника. На рисунке указан один из возможных способов расположения стен и Робота (Робот обозначен буквой «Р»).
Напишите для Робота алгоритм, закрашивающий все клетки, расположенные с внутренней стороны правой и нижней стен. Робот должен закрасить только клетки, удовлетворяющие данному условию. Например, для приведённого выше рисунка Робот должен закрасить следующие клетки (см. рисунок).
При исполнении алгоритма Робот не должен разрушиться, выполнение алгоритма должно завершиться. Конечное расположение Робота может быть произвольным. Алгоритм должен решать задачу для любого допустимого расположения стен и любого расположения и размера проходов внутри стен. Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе. Сохраните алгоритм в текстовом файле.
20.2 Напишите программу, которая в последовательности натуральных чисел определяет сумму всех чисел, кратных 7 и оканчивающихся на 2. Программа получает на вход натуральные числа, количество введённых чисел неизвестно, последовательность чисел заканчивается числом 0 (0 — признак окончания ввода, не входит в последовательность). Количество чисел не превышает 1000. Введённые числа не превышают 30 000. Программа должна вывести одно число: сумму всех чисел, кратных 7 и оканчивающихся на 2.
Пример работы программы:
Входные данные | Выходные данные |
112 24 42 49 22 0 | 154 |
2 Вариант
1. Валя шифрует русские слова (последовательности букв), записывая вместо каждой буквы её код:
А | Д | К | Н | О | С |
---|---|---|---|---|---|
01 | 100 | 101 | 10 | 111 | 000 |
Некоторые цепочки можно расшифровать не одним способом. Например, 00010101 может означать не только СКА, но и СНК. Даны три кодовые цепочки:
1010110
100000101
00011110001
Найдите среди них ту, которая имеет только одну расшифровку, и запишите в ответе расшифрованное слово.
2. В алгоритме, записанном ниже, используются переменные a и b. Символ «:=» обозначает оператор присваивания, знаки «+», «-», «*» и «/» — соответственно операции сложения, вычитания, умножения и деления. Правила выполнения операций и порядок действий соответствуют правилам арифметики. Определите значение переменной a после выполнения алгоритма:
а := 100
b := 50
b := а - b/2
а := a/5 + b/3
В ответе укажите одно целое число — значение переменной a.
3. Запишите значение переменной s, полученное в результате работы следующей программы. Текст программы приведён на трёх языках программирования.
Алгоритмический язык | Бейсик | Паскаль |
---|---|---|
алгнач цел s, k s := 0 нц для k от 7 до 12 s := s + 11 кц вывод s кон | DIM k, s AS INTEGERs = 0
FOR к = 7 TO 12
s = s + 11
NEXT k
PRINT s
| Var s,k: integer;
Begin
s := 0;for k := 7 to 12 do s := s + 11; writeln(s);
End.
|
4. Садовник, работая в оранжерее ботанического сада, записывал в таблицу Flow количество видов растений, цветущих в текущем месяце. (Flow[1] — количество цветущих растений в январе, Flow[2] – в феврале и т. д.).
Определите, какое число будет напечатано в результате работы следующей программы. Текст программы приведён на трёх языках программирования.
Алгоритмический язык | Бейсик | Паскаль |
---|---|---|
алг
нач целтаб Flow[1:12] цел k, m Flow[1] := 25; Flow[2] := 33 Flow[3] := 45; Flow[4] := 56 Flow[5] := 78; Flow[6] := 112 Flow[7] := 120;Flow[8] := 133 Flow[9] := 97; Flow[10] := 77 Flow[11] := 59;Flow[12] := 34 m := 23 нц для k от 1 до 12 если Flow[k] < 50 то m := m + 1 все кц вывод m кон |
DIM Flow(12) AS INTEGER
DIM k,m AS INTEGER Flow(1)= 25: Flow(2)= 33 Flow(3)= 45: Flow(4) = 56 Flow(5)= 78: Flow(6)= 112 Flow(7)= 120: Flow(8)= 133 Flow(9)= 97: Flow(10)= 77 Flow(11)= 59: Flow(12)= 34 m = 23 FOR k = 1 TO 12 IF Flow(k) < 50 THEN m = m + 1 END IF NEXT k PRINT m |
Var k, m: integer;
Flow: array[1..12] of integer; Begin Flow[1] := 25; Flow[2] := 33; Flow[3] := 45; Flow[4] := 56; Flow[5] := 78; Flow[6] := 112; Flow[7] := 120; Flow[8] := 133; Flow[9] := 97; Flow[10] := 77; Flow[11] := 59; Flow[12] := 34; m := 23; For k := 1 to 12 Do If Flow[k] < 50 Then Begin m := m + 1; End; Writeln(m); End. |
5. Некоторый алгоритм из одной цепочки символов получает новую цепочку следующим образом. Сначала вычисляется длина исходной цепочки символов; если она нечётна, то удаляется средний символ цепочки, а если чётна, то в конец цепочки добавляется символ В. В полученной цепочке символов каждая буква заменяется буквой, следующей за ней в русском алфавите (А — на Б, Б — на В и т. д., а Я — на А). Получившаяся таким образом цепочка является результатом работы алгоритма.
Например, если исходной была цепочка РУКА, то результатом работы алгоритма будет цепочка СФЛБГ, а если исходной была цепочка СОН, то результатом работы алгоритма будет цепочка ТО.
Дана цепочка символов БОТ. Какая цепочка символов получится, если к данной цепочке применить описанный алгоритм дважды (т. е. применить алгоритм к данной цепочке, а затем к результату вновь применить алгоритм)? Русский алфавит: АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ.
6. Выберите ОДНО из предложенных ниже заданий: 20.1 или 20.2.
20.1 Исполнитель Робот умеет перемещаться по лабиринту, начерченному на плоскости, разбитой на клетки. Между соседними (по сторонам) клетками может стоять стена, через которую Робот пройти не может.
У Робота есть девять команд. Четыре команды — это команды-приказы:
При выполнении любой из этих команд Робот перемещается на одну клетку соответственно: вверх ↑ вниз ↓, влево ← , вправо →. Если Робот получит команду передвижения сквозь стену, то он разрушится.
Также у Робота есть команда закрасить, при которой закрашивается клетка, в которой Робот находится в настоящий момент.
Ещё четыре команды — это команды проверки условий. Эти команды проверяют, свободен ли путь для Робота в каждом из четырёх возможных направлений:
Эти команды можно использовать вместе с условием «если», имеющим следующий вид:
если условие то
последовательность команд
все
Здесь условие — одна из команд проверки условия. Последовательность команд — это одна или несколько любых команд-приказов. Например, для передвижения на одну клетку вправо, если справа нет стенки, и закрашивания клетки можно использовать такой алгоритм:
если справа свободно товправо
закрасить
все
В одном условии можно использовать несколько команд проверки условий, применяя логические связки и, или, не, например:
если (справа свободно) и (не снизу свободно) то
вправо
все
Для повторения последовательности команд можно использовать цикл «пока», имеющий следующий вид:
нц пока условие
последовательность команд
кц
Например, для движения вправо, пока это возможно, можно использовать следующий алгоритм:
нц пока справа свободно
вправо
кц
Выполните задание.
На бесконечном поле имеется горизонтальная стена. Длина стены неизвестна. Робот находится сверху от стены в левом её конце. На рисунке приведено расположение Робота относительно стены (Робот обозначен буквой «Р»).
Напишите для Робота алгоритм, закрашивающий все клетки, расположенные выше стены на расстоянии одной пустой клетки от стены, независимо от длины стены. Робот должен закрасить только клетки, удовлетворяющие данному условию. Например, для приведённого выше рисунка Робот должен закрасить следующие клетки (см. рисунок).
Конечное расположение Робота может быть произвольным. При исполнении алгоритма Робот не должен разрушиться. Алгоритм должен решать задачу для произвольного размера поля и любого допустимого расположения стен.
Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе.
20.2 Напишите программу для решения следующей задачи. Девятиклассники участвовали в викторине по математике. Необходимо было ответить на 20 вопросов. Победителем викторины считается участник, правильно ответивший на наибольшее количество вопросов. На сколько вопросов победитель ответил правильно? Если есть участники викторины, которые не смогли дать правильный ответ ни на один из вопросов, выведите YES, иначе выведите NO. Гарантируется, что есть участники, правильно ответившие хотя бы на один из вопросов. Программа получает на вход число участников викторины N (1 ≤ N ≤ 50), затем для каждого участника вводится количество вопросов, на которые получен правильный ответ.
Пример работы программы:
Входные данные | Выходные данные |
4
15
12
0
17
|
17
YES
|
Комментариев нет:
Отправить комментарий