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