Шешімі: Замена нечётных элементов массива
Дан целочисленный массив из 30 элементов. Элементы массива могут принимать натуральные значения от 1 до 10 000 включительно. Опишите на одном из языков программирования алгоритм, который находит сумму элементов массива, не больших 197 и при этом имеющих нечётное значение, а затем заменяет каждый такой элемент на число, равное найденной сумме. Гарантируется, что хотя бы один такой элемент в массиве есть. В качестве результата необходимо вывести изменённый массив, каждый элемент выводится с новой строчки.
Например, для исходного массива из семи элементов:
148
1
202
351
171
74
201
программа должна вывести следующий массив:
148
172
202
351
172
74
201
Исходные данные объявлены в программе заранее: массив содержит 30 элементов и обозначен переменной a, количество элементов — переменной n, индекс элемента — переменной i. Разрешается использовать также целочисленные переменные j и k. В качестве ответа приведите фрагмент программы, находящийся вместо многоточия после ввода элементов массива. Можно использовать Python, Бейсик, алгоритмический язык, Паскаль или C++.
Шешім по шагам
6 қадамСначала заведём переменную s для суммы подходящих элементов и обнулим её.
Первым проходом просмотрим все 30 элементов. Если элемент не больше 197 и нечётен, добавим его к сумме.
$$a[i] \leq 197 \land a[i] \bmod 2 = 1$$Вторым проходом снова просмотрим массив. Каждый подходящий элемент заменим найденной суммой s.
После замены выведем все элементы массива, каждый с новой строки.
Один из возможных нұсқа шешімдер на Python:
s = 0
for i in range(n):
if a[i] <= 197 and a[i] % 2 == 1:
s += a[i]
for i in range(n):
if a[i] <= 197 and a[i] % 2 == 1:
a[i] = s
print(a[i])
Python: s = 0; первый цикл находит сумму подходящих элементов, второй заменяет их на s и выводит массив.
Бұл жауап талдау нәтижесінде алынды, бірақ банктің ресми кілтімен тексерілген жоқ — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Используют условие a[i] < 197 вместо a[i] <= 197.
Проверяют нечётность через деление, допуская ошибку; надёжнее использовать a[i] % 2 == 1.
Заменяют элементы во время вычисления суммы, из-за чего сумма получается неверной.
Выводят элементы не по одному в строке.