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


Задания
Версия для печати и копирования в 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.