РУҚА
25

Шешімі: Замена элементов массива

ЕГЭ · Информатика · Тапсырма 25 · Массивтер және жолдар
КүрделіФИПИ6F4A08Толық шешім≈ 10 минутТалдау 5 қадам
Условие

Дан целочисленный массив из 30 элементов. Элементы массива могут принимать натуральные значения от 1 до 10 000 включительно. Опишите на одном из языков программирования алгоритм, который находит минимум среди элементов массива, делящихся нацело на 3, а затем заменяет каждый элемент, делящийся нацело на 3, на число, равное найденному минимуму. Гарантируется, что хотя бы один такой элемент в массиве есть. В качестве результата необходимо вывести изменённый массив, каждый элемент выводится с новой строчки.

Исходные данные объявлены заранее. В решении нельзя использовать переменные, не описанные в условии; разрешается не использовать некоторые из описанных переменных. Для Python используются переменные `a`, `n`, `i`, `j`, `k`, причём `n = 30`, а элементы массива находятся в списке `a`.

В качестве ответа приведите фрагмент программы, который должен находиться на месте многоточия после ввода массива. Можно использовать Python или другой язык программирования, указав его название и версию. В решении необходимо использовать те же исходные данные и переменные, которые предложены в условии.

Тапсырманы ашып, өзіңіз шешіңіз
Дальше ответЕгер әлі шешіп жатсаңыз – кеңестерден бастаңыз: олар жауапқа жетелейді, бірақ оны ашпайды.
К подсказкам

Шешім по шагам

5 қадам
1

Для поиска минимума достаточно просмотреть все элементы массива и рассматривать только те, которые делятся на 3 без остатка.

$$a[i] \bmod 3 = 0$$
2

Переменную `j` можно изначально установить равной 10001 — числу, большему любого возможного элемента массива. При нахождении подходящего элемента меньшего значения обновляем минимум.

$$j = \min\{a[i] \mid a[i] \bmod 3 = 0\}$$
3

После нахождения минимума повторно просматриваем массив. Каждый элемент, делящийся на 3, заменяем найденным значением `j`.

4

Выводим все элементы изменённого массива по одному в строке.

Один из возможных фрагментов шешімдер на Python:

$$j = 10001\nfor i in range(n):\n if a[i] \% 3 == 0 and a[i] < j:\n j = a[i]\nfor i in range(n):\n if a[i] \% 3 == 0:\n a[i] = j\nfor i in range(n):\n print(a[i])$$
Жауап

Python: `j = 10001; for i in range(n): if a[i] % 3 == 0 and a[i] < j: j = a[i]; for i in range(n): if a[i] % 3 == 0: a[i] = j; for i in range(n): print(a[i])`.

Бұл жауап талдау нәтижесінде алынды, бірақ банктің ресми кілтімен тексерілген жоқ — проверьте выкладки, прежде чем заучивать результат.

Где здесь ошибаются

Іздеу минимума среди всех элементов, а не только среди делящихся на 3.

Замена элементов до того, как найден минимум.

Проверка делимости с помощью `a[i] / 3` вместо остатка от деления `a[i] % 3`.

Использование дополнительной переменной, не объявленной в условии.

Вывод элементов не по одному в строке.

Закрепить приёмВ теме «Массивтер және жолдар» ещё 237 тапсырма — жауабымен және дәл осындай талдауымен.
Жаттығу

Тапсырманы қалай шешу керек 25 ЕГЭ, информатика

Бұл есептің талдауы келесіге бөлінген: 5 шагов: видно, откуда берётся каждое число и где теряется балл. Жауап есептеулердің жанында келтірілген, олардың орнына емес.

Задача из темы «Массивы и строки»: в ней 238 задач, и у каждой есть такой же разбор. Тіркеу қажет емес.