РУҚА
25

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

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

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

Исходные данные объявлены следующим образом. Разрешается использовать только указанные переменные.

Бейсик:
CONST N AS INTEGER = 30
DIM A (1 TO N) AS LONG
DIM I AS LONG, J AS LONG, K AS LONG
FOR I = 1 TO N
INPUT A(I)
NEXT I
...
END

Python:
a = []
n = 30
for i in range(0, n):
a.append(int(input()))
...

Алгоритмический язык:
алг
нач
цел N = 30
целтаб a [1:N]
цел i, j, k
нц для i от 1 до N
ввод a[i]
кц
...
кон

Паскаль:
const N = 30;
var a: array [1..N] of longint;
i, j, k: longint;
begin
for i := 1 to N do
readln(a[i]);
...
end.

C++:
const int N = 30;
int main() {
long a[N];
long i, j, k;
for (i = 0; i < N; i++)
cin >> a[i];
...
return 0;
}

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

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

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

4 қадам
1

Для каждого элемента проверяем два условия: он должен быть больше 100 и не должен делиться на 4 без остатка.

$$a_i > 100 \land a_i \bmod 4 \ne 0$$
2

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

$$S = \sum_{i=1}^{30} a_i$$
3

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

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

Жауап

Например, Шешім на Python:

s = 0
for i in range(n):
if a[i] > 100 and a[i] % 4 != 0:
s += a[i]

for i in range(n):
if a[i] > 100 and a[i] % 4 != 0:
a[i] = s

for i in range(n):
print(a[i])

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

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

Заменяют элементы во время первого прохода и из-за этого теряют исходные значения, необходимые для вычисления суммы.

Используют условие $a_i \% 4 = 0$ вместо условия $a_i \% 4 \ne 0$.

Забывают строгое условие $a_i > 100$ и включают элемент, равный 100.

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

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

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

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

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

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