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