Решение: Замена кратных четырём
Дан целочисленный массив из 30 элементов. Элементы массива могут принимать целые значения от −10 000 до 10 000 включительно. Опишите на одном из языков программирования алгоритм, который находит максимум среди элементов массива, кратных 4, а затем заменяет каждый элемент, кратный 4, на число, равное найденному максимуму. Гарантируется, что хотя бы один такой элемент в массиве есть. В качестве результата необходимо вывести изменённый массив, каждый элемент выводится с новой строки.
В качестве ответа приведите фрагмент программы, который должен находиться на месте многоточия в одном из предложенных шаблонов. Разрешается использовать только объявленные в шаблоне переменные. Для Python используются массив `a`, число `n` и целочисленные переменные `i`, `j`, `k`.
Решение по шагам
4 шагаВ переменной `j` храним максимальный найденный элемент, кратный 4. Так как элементы массива не меньше −10 000, начальное значение −10 001 гарантированно меньше любого элемента массива.
$$j = -10001$$В первом проходе рассматриваем только элементы, кратные 4, и сохраняем среди них максимум.
$$a[i] \bmod 4 = 0 \ \text{и}\ a[i] > j \Rightarrow j := a[i]$$Во втором проходе каждый элемент, кратный 4, заменяем найденным максимумом `j`.
$$a[i] \bmod 4 = 0 \Rightarrow a[i] := j$$После замены выводим все 30 элементов массива по одному в строке.
Python:
j = -10001
for i in range(n):
if a[i] % 4 == 0 and a[i] > j:
j = a[i]
for i in range(n):
if a[i] % 4 == 0:
a[i] = j
for i in range(n):
print(a[i])
Этот ответ получен в разборе, но не сверен с официальным ключом из банка — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Поиск максимума среди всех элементов, а не только среди кратных 4.
Замена только первого найденного элемента вместо всех элементов, кратных 4.
Использование дополнительной переменной, не объявленной в условии.
Вывод массива до выполнения замен.
Неверная индексация массива в выбранном языке программирования.