РУҚА
25

Шешімі: Обработка элементов массива

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

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

Например, для исходного массива из семи элементов:
48
163
200
152
177
76
2
программа должна вывести следующий массив:
48
163
352
352
177
76
2

Исходные данные объявлены следующим образом: массив содержит 30 элементов и называется a, количество элементов задаётся переменной n со значением 30. Разрешается использовать только переменные, объявленные в условии: i, j и k. В качестве ответа приведите фрагмент программы, который должен находиться на месте многоточия после ввода элементов массива. Можно использовать Python, Бейсик, алгоритмический язык, Паскаль или C++.

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

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

4 қадам
1

Сначала перебираем все элементы массива и накапливаем сумму тех, которые больше 150 и имеют чётное значение.

$$S = \sum_{i=0}^{29} a_i \text{ при } a_i > 150 \text{ и } a_i \bmod 2 = 0$$
2

Вторым проходом снова проверяем это условие и заменяем каждый подходящий элемент найденной суммой.

$$a_i := S$$
3

После замены выводим элементы массива по одному в каждой строке.

Один из допустимых нұсқа на Python:

$$s = 0\nfor i in range(n):\n if a[i] > 150 and a[i] % 2 == 0:\n s += a[i]\nfor i in range(n):\n if a[i] > 150 and a[i] % 2 == 0:\n a[i] = s\nfor i in range(n):\n print(a[i])$$
Жауап

Например, на Python:
s = 0
for i in range(n):
if a[i] > 150 and a[i] % 2 == 0:
s += a[i]
for i in range(n):
if a[i] > 150 and a[i] % 2 == 0:
a[i] = s
for i in range(n):
print(a[i])

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

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

Замена элементов во время первого прохода до того, как найдена полная сумма.

Проверка только на чётность без условия a[i] > 150.

Замена всех элементов массива вместо элементов, удовлетворяющих условию.

Вывод суммы вместо изменённого массива.

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

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

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

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

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