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




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

Дан массив, содержащий 2018 положительных целых чисел, не превышающих 1000. Необходимо увеличить все элементы, которые меньше 100, на одно и то же значение, при этом максимальный из них должен стать равным 100.

Напишите на одном из языков программирования программу для решения этой задачи. В качестве результата программа должна вывести изменённый массив, по одному элементу в строке. Например, для исходного массива из 5 элементов 112 87 27 95 148 программа должна вывести числа 112 92 32 100 148, по одному числу в строке (все элементы, меньшие 100, увеличены на 5, максимальный из них стал равен 100).

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

 

 

БейсикPython

CONST N=2018

DIM A(N) AS INTEGER

DIM I, K, M AS INTEGER

FOR I = 1 TO N

    INPUT A(I)

NEXT I

END

# кроме уже указанных

# допускается использование

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

# k, m

a = []

n = 2018

for i in range(0, n):

    a.append(int(input()))

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

const

    N=2018;

var

    a: array [1..N] of integer;

    i, k, m: integer;

begin

    for i:=1 to N do

        readln(a[i]);

    …

end.

алг

нач

    цел N=2018

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

    цел i, k, m

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

        ввод a[i]

    кц

    …

кон

С++

#include <iostream>

using namespace std;

const int N=2018;

    int main(){

    int a[N];

    int i, k, m;

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

        cin >> a[i];

    …

    return 0;

}

 

 

 

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

Решение.

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

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

 

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

 

Паскаль

m :=0;

for i:=1 to N do begin

    if (a[i] < 100) and (a[i] > m)

        then m := a[i];

end;

for i:=1 to N do begin

    if a[i] < 100

        then a[i] := a[i] + 100 − m;

    writeln(a[i])

end;

 

При использовании языка Python первый проход можно записать в одну строку, применяя специальные средства этого языка. В приведённом ниже примере использован параметр default, действующий в версии Python 3.4 и более поздних. При использовании ранних версий Python необходимо отдельно проверять наличие в массиве удовлетворяющих условию элементов.

 

Python

m = max ((k for k in a if k < 100), default = 0)

for i in range(0, n):

    if a[i] < 100:

        a[i] = a[i] + 100 − m

    print(a[i])

 

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