
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.97.9.174] |
![]() |
|
Сообщ.
#1
,
|
|
|
ЕГЭ по информатике 2020, вариант Москва
Часть 2, № 25 Алгоритм обработки массивов Задание взято с сайта http://kotolis.ru/realegeinf_2020 ![]() Условие. Дан массив, содержащий 2020 положительных целых чисел, от -10000 до 10000. Необходимо найти наибольший кратный 4 элемент этого массива. После чего в массиве изменить все элементы кратные 4 на это значение и вывести массив. Напишите на одном из языков программирования программу для решения этой задачи. В качестве результата программа должна вывести изменённый массив, по одному элементу в строке. Например, для исходного массива из 5 элементов 112 4 27 95 148 программа должна вывести числа 4 4 27 95 4 по одному числу в строке. Исходные данные объявлены так, как показано ниже на примерах для некоторых языков программирования. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать некоторые из описанных переменных В качестве ответа Вам необходимо привести фрагмент программы, который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и используемую версию языка программирования, например, Free Pascal 2.6). В этом случае Вы должны использовать те же самые исходные данные и переменные, какие были предложены в условии (например, в образце, записанном на Алгоритмическом языке). Замечание. Очень простая задача с довольно странным условием, в котором целые положительные числа начинаются от -10000. Не будем обращать внимание на эти странности, будем делать точно по условию. Кроме того, раз уж такая простая задача попала в часть 2, сделаем её чуть более рационально, чем на сайте. Без использования дополнительных переменных. Решение. Программа на Паскале: ![]() ![]() const N = 2020; var a: array [1..N] of integer; i, k, m: integer; begin for i:= 1 to N do readln(a[i]); ... end. Алгоритм 1. Инициализация. Пусть в переменной k будет храниться максимальный элемент массива, кратный 4. Поскольку 0 не является положительным числом, первоначально положим k:= 0. 2. Поиск максимального элемента Во время чтения элементов массива будем проверять, выполняется ли условие делимости на 4, если оно выполнено, то проверять, не нашли ли мы элемент больший k. 3. Вывод массива на печать Если после завершения цикла значение k осталось равным 0, то массив не изменился. Печатаем массив a. Иначе в цикле опять проверяем для каждого элемента массива условие делимости на 4, и, если условие выполнено, присваиваем этому элементу значение k и затем печатаем. ![]() ![]() const N = 2020; var a: array [1..N] of integer; i, k, m: integer; begin k:= 0; for i:= 1 to N do begin readln(a[i]); if (a[i] mod 4 = 0) then if a[i] > k then k:= a[i]; end; if k = 0 then for i:= 1 to n do writeln(a[i]) else for i:= 1 to n do begin if a[i] mod 4 = 0 then a[i]:= k; writeln(a[i]) end; end. |