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




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

Дан целочисленный массив из 40 элементов. Элементы массива могут принимать произвольные значения. Опишите на русском языке или на одном из языков программирования алгоритм, который находит и выводит сумму элементов наибольшей возрастающей последовательности подряд идущих элементов массива.

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

 

БэйсикПаскаль

N = 40

DIM A(N) AS INTEGER

DIM I, L, LMAX, S, SMAX AS INTEGER

FOR I = 1 TO N

INPUT A (I)

NEXT I

...

END

const

N = 40;

var

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

i, l, lmax, s, smax:

integer;

begin

for i : = 1 to N do

readln(a[i]);

...

end.

Си++Алгоритмический язык

#include <iostream>

using namespace std;

#define N 40

int main(void)

{int a [N]; int

i, l, lmax, s, smax;

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

cin >> a[i];

...

}

алг

нач

цел N = 40

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

цел i, L, Lmax, S, Smax

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

ввод a[i]

кц

...

кон

Естественный язык

Объявляем массив А из 40 элементов.

Объявляем целочисленные переменные I, L, Lmax, S, Smax.

В цикле от 1 до 40 вводим элементы массива А с 1-го по 40-й.

...

Python

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

# использовать четыре

# целочисленные переменные l, lmax, s, smax

a = []

n = 40

for i in range(0, n):

a.append(int(input()))

...

 

 

 

 

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

Решение.

 

ПАСКАЛЬБЕЙСИК

lmax : = 0 ;

l := 1;

s := а[1];

for i : = 2 to N do

if a[i] > a[i - 1] then

begin

l := l + 1;

s:=s+a[i];

end

else

begin

if l>lmax, then

begin

lmax:=l;

smax : = s

end;

l := 1;

s := a[i]

end ;

if l > lmax then

smax : = s;

writeln(smax);

LMAX = 0

L = 1

S = A (1)

FOR I = 2 TO N

IF A (I) > A (I - 1) THEN

L = L + 1

S = S + A (I)

ELSE

IF L > LMAX THEN

LMAX = L

SMAX = S

ENDIF

L = 1

S = A (I)

ENDIF

NEXT I

IF L > LMAX THEN

SMAX = S

ENDIF

PRINT SMAX

СИАлгоритмический язык
lmax = 0;

l = 1;

s = a [ 0 ] ;

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

if(a[i] > a[i - 1])

{

l++;

s += a[i];

}

else

{

if(l > lmax)

{

lmax = l;

smax = s ;

}

l = 1;

s = a [ i ] ;

}

if(l > lmax)

smax = s;

cout « smax « endl;

Lmax : = 0

L := 1

S := a[i]

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

если a[i] > a[i - 1]

TO

L := L + 1

S := S + a [i ]

иначе

если L > Lmax

TO

Lmax : = L

Smax : = S

все

L := 1

S := a[i}

все

кц

если L > Lmax

то

Smax : = S

все

вывод Smax

Естественный язык
Записываем в переменную Lmax начальное значение, равное нулю, в переменную L — начальное значение, равное единице, в переменную S — начальное значение, равное первому элементу массива.

В цикле перебираем все элементы со 2-го до 40-го. Если значение текущего элемента массива оказывается больше значения предыдущего элемента: увеличиваем значение переменной L на 1;

увеличиваем значение переменной S на значение текущего элемента. Иначе: если значение переменной L больше значения переменной Lmax, то переменной Lmax присваиваем значение переменной L, а переменной Smax присваиваем значение переменной S; переменной L присваиваем значение 1; переменной S присваиваем значение текущего элемента массива.

После окончания цикла, если значение переменной L оказалось больше значения переменной Lmax, присваиваем переменной Smax значение переменной S. Выводим значение переменной Smax.