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