СДАМ ГИА: РЕШУ ЕГЭ
Образовательный портал для подготовки к экзаменам
Информатика
Информатика
Cайты, меню, вход, новости


Задания
Версия для печати и копирования в MS Word
Задание 25 № 18453

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

 

Например, для исходного массива из шести элементов:

4

1104

74

1005

6

1006

программа должна вывести следующий массив:

4

2

74

2

6

1006

 

Исходные данные объявлены так, как показано ниже на примерах для некоторых языков программирования. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать некоторые из описанных переменных.

 

 

 

БейсикPython

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

# допускается также

# использовать две

# целочисленные переменные j и k

a = []

n = 30

for i in range(0, n):

    a.append(int(input()))

ПаскальАлгоритмический язык

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.

алг

нач

    цел N=30

    целтаб a[1:N]

    цел i, j, k

    нц для i от 1 до N

        ввод a[i]

    кц

    …

кон

С++

#include <iostream>

using namespace std;

const int N=30;

    int main(){

    int a[N];

    int i, j, k;

    for (i=0; i < N; i++)

        cin >> a[i];

    …

    return 0;

}

 

 

 

В качестве ответа Вам необходимо привести фрагмент программы, который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и используемую версию языка программирования, например Free Pascal 2.6). В этом случае Вы должны использовать те же самые исходные данные и переменные, какие были предложены в условии (например, в образце, записанном на Алгоритмическом языке).

Решение.

Задача решается в два прохода: на первом проходе определяются элементы, не меньшие 1002 и при этом кратные 3, и количество таких элементов, на втором производится корректировка и вывод элементов.

Возможно решение в три прохода, когда на втором проходе выполняется только замена значений, а на третьем — вывод.

 

Пример правильной программы на языке Паскаль:

 

Паскаль

k := 0;

for i := 1 to N do

    if (a[i] >= 1002) and (a[i] mod 3 = 0) then

        k := k + 1;

for i := 1 to N do begin

    if (a[i] >= 1002) and (a[i] mod 3 = 0) then

        a[i] := k;

    writeln(a[i]);

end;

 

Пример правильной программы на языке Python:

 

Python

k = 0

for i in range(n):

    if a[i] >= 1002 and a[i] % 3 == 0:

        k = k + 1

for i in range(n):

    if a[i] >= 1002 and a[i] % 3 == 0:

        a[i] = k

    print(a[i])

Источник: ЕГЭ — 2019. Досрочная волна. Вариант 2.