Демонстрационный вариант ЕГЭ 2017 по информатике – задание №25 — Дан целочисленный массив из 40 элементов. Элементы массива могут принимать целые значения от 0 до 10 000 включительно. Опишите на естественном языке или на одном из языков программирования алгоритм, позволяющий найти и вывести количество пар элементов массива, в которых десятичная запись хотя бы одного числа оканчивается на 2. В данной задаче под парой подразумевается два подряд идущих элемента массива.
Например, для массива из пяти элементов: 16 3 142 55 22 – ответ: 3.
Исходные данные объявлены так, как показано ниже на примерах для некоторых языков программирования и естественного языка. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать некоторые из описанных переменных.
Бейсик
|
CONST N = 40 DIM A (1 TO N) AS INTEGER DIM I, J, K, AS INTEGER FOR I = 1 TO N INPUT A(I) NEXT I ... END |
Python
|
//допускается также использовать //две целочисленные переменные j и k a = [] n = 40 for i in range(0, n): a.append(int(input())) ... |
Алгоритмический язык
|
алг нач цел N = 40 целтаб a[1:N] цел i, j, k нц для i от 1 до N ввод a[i] кц ... кон |
Паскаль
|
const N = 40; var a: array [1..N] of integer; i, j, k: integer; begin for i := 1 to N do readln(a[i]); ... end. |
Си
|
#include <stdio.h> #define N 40 int main() { int a[N]; int i, j, k; for (i = 0; i < N; i++) scanf("%d", &a[i]); ... return 0; } |
Естественный язык
|
Объявляем массив A из 40 элементов. Объявляем целочисленные переменные I, J, K. В цикле от 1 до 40 вводим элементы массива A с 1-го по 40-й. … |
В качестве ответа Вам необходимо привести фрагмент программы (или описание алгоритма на естественном языке), который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и используемую версию языка программирования, например, Free Pascal 2.6) или в виде блок-схемы. В этом случае Вы должны использовать те же самые исходные данные и переменные, какие были предложены в условии (например, в образце, записанном на естественном языке).
Решение:
Содержание верного ответа и указания по оцениванию
(допускаются иные формулировки решений, приводящие к правильному результату)
На языке Паскаль
|
k := 0; for i := 1 to N - 1 do if (a[i] mod 10 = 2) or (a[i + 1] mod 10 = 2) then inc(k); writeln(k); |
На алгоритмическом языке
|
k := 0; нц для i от 1 до N-1 если mod(a[i],10)=2 или mod(a[i+1],10)=2 то k := k+1 все кц вывод k |
На языке Бейсик
|
K = 0 FOR I = 1 TO N - 1 IF (A(I) MOD 10 = 2) OR (A(I + 1) MOD 10 = 2) THEN K = K + 1 END IF NEXT I PRINT K |
На языке Си
|
k = 0; for (i = 0; i < N - 1; i++) if (a[i] % 10 == 2 || a[i + 1] % 10 == 2) k++; printf("%d", k); |
На языке Python
|
k = 0 for i in range(0, n – 1): if (a[i] % 10 == 2 or a[i + 1] % 10 == 2): k += 1 print(k) |
Указания по оцениванию |
Баллы |
Общие указания
1. В алгоритме, записанном на языке программирования,
допускается наличие отдельных синтаксических ошибок,
не искажающих замысла автора программы.
2. Эффективность алгоритма не имеет значения и не
оценивается.
3. Допускается запись алгоритма на языке программирования,
отличном от языков, перечисленных в условии. В этом случае
должны использоваться переменные, аналогичные описанным
в условии. Если язык программирования использует
типизированные переменные, описания переменных должны
быть аналогичны описаниям переменных на естественном
языке. Использование нетипизированных или необъявленных
переменных возможно только в случае, если это допускается
языком программирования; при этом количество переменных
и их идентификаторы должны соответствовать условию задачи |
|
Предложен правильный алгоритм, выдающий в качестве
результата верное значение |
2 |
Не выполнены условия, позволяющие поставить 2 балла.
Предложено в целом верное решение, содержащее не более
одной ошибки из числа следующих:
1) в цикле происходит выход за границу массива (например,
при использовании цикла от 1 до N);
2) не инициализируется или неверно инициализируется
счётчик количества найденных пар;
3) счётчик количества пар в цикле не изменяется или
изменяется неверно;
4) неверно выделяется последняя цифра числа;
5) при проверке выполнения условия для пары элементов
используются неверные индексы;
6) последняя цифра выделяется не у самих элементов
массива, а у их индексов;
7) в сложном логическом условии простые проверки верны,
но условие в целом построено неверно (например,
перепутаны операции «И» и «ИЛИ», неверно расставлены
скобки в логическом выражении);
8) отсутствует вывод ответа;
9) используется переменная, не объявленная в разделе
описания переменных;
10) не указано или неверно указано условие завершения цикла;
11) индексная переменная в цикле не меняется (например,
в цикле while) или меняется неверно;
12) неверно расставлены операторные скобки |
1 |
Не выполнены условия, позволяющие поставить 1 или 2 балла |
0 |
Максимальный балл |
2 |