Решение: Замена элементов массива
Дан целочисленный массив из 30 элементов. Элементы массива могут принимать натуральные значения от 1 до 10 000 включительно. Опишите на одном из языков программирования алгоритм, который находит минимум среди элементов массива, не делящихся нацело на 6, а затем заменяет каждый элемент, не делящийся нацело на 6, на число, равное найденному минимуму. Гарантируется, что хотя бы один такой элемент в массиве есть. В качестве результата необходимо вывести изменённый массив, каждый элемент выводится с новой строчки.
Например, для исходного массива из шести элементов: 14, 6, 11, 18, 9, 24 — программа должна вывести: 9, 6, 9, 18, 9, 24.
В качестве ответа необходимо привести фрагмент программы, который должен находиться на месте многоточия после ввода массива. Можно использовать Python, Бейсик, Алгоритмический язык, Паскаль или C++. Необходимо использовать те же исходные данные и переменные, которые предложены в условии. Для Python массив хранится в переменной a, его размер — в переменной n, а также разрешены целочисленные переменные i, j и k.
Решение по шагам
3 шагаСначала выбираем любой элемент, не делящийся на 6, в качестве начального минимума. Затем просматриваем массив и обновляем минимум при нахождении меньшего подходящего элемента.
$$a[i] \bmod 6 \ne 0$$После нахождения минимума ещё раз просматриваем массив. Каждый элемент, не делящийся на 6, заменяем найденным минимумом и выводим.
$$a[i] := j \text{ при } a[i] \bmod 6 \ne 0$$Один из возможных фрагментов программы на Python:
$$j = min(x \mid x \in a,\ x \bmod 6 \ne 0)$$Python 3:
j = 10001
for i in range(n):
if a[i] % 6 != 0 and a[i] < j:
j = a[i]
for i in range(n):
if a[i] % 6 != 0:
a[i] = j
print(a[i])
Этот ответ получен в разборе, но не сверен с официальным ключом из банка — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Поиск минимума среди всех элементов массива, включая элементы, делящиеся на 6.
Замена только первого найденного элемента вместо всех подходящих элементов.
Использование условия a[i] % 6 == 0 вместо a[i] % 6 != 0.
Вывод исходных значений до выполнения замены.
Инициализация минимума нулём, хотя все элементы массива натуральные.