Шешімі: Замена кратных семи минимумом
Дан целочисленный массив из 30 элементов. Элементы массива могут принимать натуральные значения от 1 до 10 000 включительно. Опишите на одном из языков программирования алгоритм, который находит минимум среди элементов массива, делящихся нацело на 7, а затем заменяет каждый элемент, делящийся нацело на 7, на число, равное найденному минимуму. Гарантируется, что хотя бы один такой элемент в массиве есть. В качестве результата необходимо вывести изменённый массив, каждый элемент выводится с новой строки.
Исходные данные объявлены заранее. Разрешается использовать только объявленные переменные. В Python доступны массив a, переменная n и целочисленные переменные i, j, k; в остальных языках доступны массив a, константа N и переменные i, j, k. В ответе необходимо привести фрагмент программы, который заменяет многоточие после ввода элементов массива. Можно использовать любой из предложенных языков программирования, указав его название и версию.
Шешім по шагам
4 қадамВыбираем Python. Так как все элементы находятся в диапазоне от 1 до 10 000, начальное значение минимума можно взять равным 10001.
$$k = 10001$$Первым проходом рассматриваем только элементы, кратные 7, и сохраняем среди них наименьший.
$$a[i] \mathbin{\%} 7 = 0 \Rightarrow k = \min(k, a[i])$$Вторым проходом заменяем каждый элемент, кратный 7, на найденное значение k и выводим все элементы массива.
$$a[i] \mathbin{\%} 7 = 0 \Rightarrow a[i] = k$$Один из возможных фрагментов программы на Python:
Python:
```python
k = 10001
for i in range(n):
if a[i] % 7 == 0 and a[i] < k:
k = a[i]
for i in range(n):
if a[i] % 7 == 0:
a[i] = k
print(a[i])
```
Бұл жауап талдау нәтижесінде алынды, бірақ банктің ресми кілтімен тексерілген жоқ — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Инициализация минимума нулём: при поиске минимума среди натуральных чисел это даст неверный результат.
Замена элементов во время первого прохода до того, как найден настоящий минимум.
Проверка делимости с использованием a[i] / 7 вместо a[i] % 7 == 0.
Вывод только элементов, кратных 7, вместо всего изменённого массива.
Использование дополнительной переменной, не объявленной в условии.