Разбор 25 задания ЕГЭ 2020 по информатике из демонстрационного варианта. Проверяемые элементы содержания: умение составить алгоритм и записать его в виде простой программы (10-15 строк) на языке программирования.
Задание
Дан целочисленный массив из 30 элементов. Элементы массива могут принимать натуральные значения от 1 до 10 000 включительно. Опишите на одном из языков программирования алгоритм, который находит минимум среди элементов массива, не делящихся нацело на 6, а затем заменяет каждый элемент, не делящийся нацело на 6, на число, равное найденному минимуму. Гарантируется, что хотя бы один такой элемент в массиве есть. В качестве результата необходимо вывести изменённый массив, каждый элемент выводится с новой строчки.
Например, для исходного массива из шести элементов:
14
6
11
18
9
24
программа должна вывести следующий массив:
9
6
9
18
9
24
Исходные данные объявлены так, как показано ниже на примерах для некоторых языков программирования. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать некоторые из описанных переменных.
В качестве ответа Вам необходимо привести фрагмент программы, который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и используемую версию языка программирования, например Free Pascal 2.6). В этом случае Вы должны использовать те же самые исходные данные и переменные, какие были предложены в условии (например, в образце, записанном на Алгоритмическом языке).
Разбор 25 задания ЕГЭ
На языке Паскаль
k := 10000;
for i := 1 to N do
if (a[i] mod 6 <> 0) and (a[i] < k) then
k := a[i];
for i := 1 to N do begin
if (a[i] mod 6 <> 0) then
a[i] := k;
writeln(a[i]);
end;
На Алгоритмическом языке
k := 10000
нц для i от 1 до N
если mod(a[i], 6) <> 0 и a[i] < k
то
k := a[i]
все
кц
нц для i от 1 до N
если mod(a[i], 6) <> 0
то
a[i] := k
все
вывод a[i], нс
кц
На языке Бейсик
K = 10000
FOR I = 1 TO N
IF A(I) MOD 6 <> 0 AND A(I) < K THEN
K = A(I)
END IF
NEXT I
FOR I = 1 TO N
IF A(I) MOD 6 <> 0 THEN
A(I) = K
END IF
PRINT A(I)
NEXT I
На языке С++
k = 10000;
for (i = 0; i < N; i++)
if (a[i] % 6 != 0 && a[i] < k)
k = a[i];
for (i = 0; i < N; i++) {
if (a[i] % 6 != 0)
a[i] = k;
cout << a[i] << endl;
}
На языке Python
k = 10000
for i in range(0, n):
if (a[i] % 6 != 0 and a[i] < k):
k = a[i]
for i in range(0, n):
if (a[i] % 6 != 0):
a[i] = k
print(a[i])
Допускается запись алгоритма на языке программирования, отличном от языков, приведенных в условии.