Письмами Рособрнадзора от 02.12.2016 N 10-835, от 23.12.2016 N 02-411 направлены уточненные редакции методических документов, рекомендуемых к использованию при организации и проведении ГИА-9 и ГИА-11 в 2017 году.
Дан целочисленный массив из 20 элементов. Элементы массива могут принимать целые значения от -10 000 до 10 000 включительно. Опишите на естественном языке или на одном из языков программирования алгоритм, позволяющий найти и вывести количество пар элементов массива, в которых оба числа делятся на 3. В данной задаче под парой подразумевается два подряд идущих элемента массива.
Например, для массива из пяти элементов: 6; 2; 9; -3; 6 - ответ: 2.
Исходные данные объявлены так, как показано ниже на примерах для некоторых языков программирования и естественного языка. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать некоторые из описанных переменных.
Бейсик
Python
CONST N AS INTEGER = 20
DIM A (1 TO N) AS INTEGER
DIM I AS INTEGER,
J AS INTEGER,
K AS INTEGER
# допускается также
# использовать две
# целочисленные переменные j и k
a = []
n = 20
for i in range(0, n):
a.append(int(input()))
...
FOR I = 1 TO N
INPUT A(I)
NEXT I
...
END
Алгоритмический язык
Паскаль
алг
нач
цел N = 20
целтаб a[1:N]
цел i, j, k
нц для i от 1 до N
ввод a[i]
кц
...
const
N = 20;
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 20
int main() {
int a[N];
int i, j, k;
for (i = 0; i<N; i++)
scanf("%d", &a[i]);
...
return 0;
}
Объявляем массив A из 20 элементов.
Объявляем целочисленные переменные I, J, K.
В цикле от 1 до 20 вводим элементы массива A с 1-го по 20-й.
...
В качестве ответа Вам необходимо привести фрагмент программы (или описание алгоритма на естественном языке), который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и используемую версию языка программирования, например Free Pascal 2.6) или в виде блок-схемы. В этом случае Вы должны использовать те же самые исходные данные и переменные, какие были предложены в условии (например, в образце, записанном на естественном языке).
Содержание верного ответа и указания по оцениванию
(допускаются иные формулировки решений, приводящие к правильному результату)
На языке Паскаль
k := 0;
for i := 1 to N-1 do
if (a[i] mod 3=0) and (a[i+1] mod 3=0) then
inc(k);
writeln(k);
На алгоритмическом языке
k := 0;
нц для i от 1 до N-1
если mod(a[i],3)=0 и mod(a[i+1],3)=0
то
k := k+1
все
кц
вывод k
На языке Бейсик
K = 0
FOR I = 1 TO N-1
IF (A(I) MOD 3 = 0) AND (A(I + 1) MOD 3 = 0) THEN
K = K+1
END IF
NEXT I
PRINT K
На языке Си
k = 0;
for (i = 0; i<N-1; i++)
if (a[i]%3 == 0 && a[i+1]%3 == 0)
k++;
printf("%d", k);
На языке Python
k = 0
for i in range(0, n - 1):
if (a[i] % 3 == 0 and a[i + 1] % 3 == 0):
k += 1
print(k)
На естественном языке
Записываем в переменную K начальное значение, равное 0. В цикле от первого элемента до предпоследнего находим остаток от деления текущего и следующего элемента массива на 3. Если оба остатка равны 0, увеличиваем переменную K на единицу.
После завершения цикла выводим значение переменной K
Указания по оцениванию
Баллы
Общие указания.
1. В алгоритме, записанном на языке программирования, допускается наличие отдельных синтаксических ошибок, не искажающих замысла автора программы.
2. Эффективность алгоритма не имеет значения и не оценивается.
3. Допускается запись алгоритма на языке программирования, отличном от языков, перечисленных в условии. В этом случае должны использоваться переменные, аналогичные описанным в условии. Если язык программирования использует типизированные переменные, описания переменных должны быть аналогичны описаниям переменных на естественном языке. Использование нетипизированных или необъявленных переменных возможно только в случае, если это допускается языком программирования; при этом количество переменных и их идентификаторы должны соответствовать условию задачи
Предложен правильный алгоритм, выдающий в качестве результата верное значение
2
Не выполнены условия, позволяющие поставить 2 балла. Предложено в целом верное решение, содержащее не более одной ошибки из числа следующих:
1) в цикле происходит выход за границу массива (например, используется цикл от 1 до N);
2) не инициализируется или неверно инициализируется счетчик количества найденных пар;
3) счетчик количества пар в цикле не изменяется или изменяется неверно;
4) неверно проверяется делимость на 3;
5) на делимость проверяются не сами элементы, а их индексы;
6) при проверке выполнения условия для пары элементов используются неверные индексы;
7) в сложном логическом условии простые проверки верны, но условие в целом построено неверно (например, перепутаны операции "И" и "ИЛИ", неверно расставлены скобки в логическом выражении);
8) отсутствует вывод ответа;
9) используется переменная, не объявленная в разделе описания переменных;
10) не указано или неверно указано условие завершения цикла;
11) индексная переменная в цикле не меняется (например, в цикле while) или меняется неверно;
12) неверно расставлены операторные скобки
1
Ошибок, перечисленных в п. 1 - 12, две или больше, или алгоритм сформулирован неверно (в том числе при отсутствии цикла в явном или неявном виде)