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