Решение: Минимум кратных трём
Дан целочисленный массив из 30 элементов. Элементы массива могут принимать натуральные значения от 1 до 10 000 включительно. Опишите на одном из языков программирования алгоритм, который находит минимум среди элементов массива, делящихся нацело на 3, а затем увеличивает каждый элемент, делящийся нацело на 3, на число, равное найденному минимуму. Гарантируется, что хотя бы один такой элемент в массиве есть. В качестве результата необходимо вывести изменённый массив, каждый элемент выводится с новой строки.
В качестве ответа необходимо привести фрагмент программы, который должен находиться на месте многоточия в заготовке. Решение можно записать на другом языке программирования, указав его название и версию. При этом необходимо использовать те же исходные данные и переменные, которые предложены в условии.
Решение по шагам
3 шагаИспользуем две обработки массива: сначала находим минимальный элемент, делящийся на 3, затем изменяем элементы, делящиеся на 3, и выводим результат.
Например, на Python фрагмент программы может выглядеть так:
j = 10001
for i in range(0, n):
if a[i] % 3 == 0 and a[i] < j:
j = a[i]
for i in range(0, n):
if a[i] % 3 == 0:
a[i] += j
print(a[i])
Переменная j хранит найденный минимум. Гарантия наличия хотя бы одного элемента, кратного 3, обеспечивает замену начального значения 10001 на корректный минимум.
Python:
j = 10001
for i in range(0, n):
if a[i] % 3 == 0 and a[i] < j:
j = a[i]
for i in range(0, n):
if a[i] % 3 == 0:
a[i] += j
print(a[i])
Этот ответ получен в разборе, но не сверен с официальным ключом из банка — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Изменяют массив во время поиска минимума, из-за чего минимум определяется неверно.
Прибавляют минимум ко всем элементам, а не только к элементам, кратным 3.
Выводят только изменённые элементы вместо всего массива.
Инициализируют минимум нулём, хотя все элементы массива положительные.