Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
C2.doc
Скачиваний:
4
Добавлен:
16.09.2019
Размер:
393.22 Кб
Скачать

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

I, k, max, max2: integer;

begin

for i:=1 to N do readln(a[i]);

if a[1] > a[2] then begin

max:=a[1]; max2:=a[2];

end

else begin

max:=a[2]; max2:=a[1];

end;

for i:=3 to N do

if a[i] > max then begin

max2 := max;

max := a[i];

end

else if a[i] > max2 then max2 := a[i];

writeln(max2);

end.

  1. Дан целочисленный массив из 30 элементов. Элементы массива могут принимать произвольные целые значения. Опишите на русском языке или на одном из языков программирования алгоритм, который находит и выводит номер третьего положительного элемента массива (если из массива вычеркнуть все неположительные элементы, этот элемент стоял бы в получившемся массиве на третьем месте). Если в массиве меньше, чем три положительных элемента, вывести сообщение об этом. Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из них.

Паскаль

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

const N=30;

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

i, j, k: integer;

begin

for i:=1 to N do readln(a[i]);

...

end.

Объявляем массив A из 30 элементов. Объявляем целочисленные переменные i, j, k. В цикле от 1 до 30 вводим элементы массива A с 1-го по 30-й.

...

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

Очевидно, что нужно считать найденные положительные элементы (например, с помощью переменной k) и, когда k станет равно 3, запомнить номер текущего элемента (в переменной j).

Решение на естественном языке. Записываем в переменную k начальное значение 0. Затем в цикле перебираем все элементы массива с 1-ого по 30-ый. Если очередной элемент больше нуля, увеличиваем счетчик k. Если k=3, записываем номер текущего элемента в переменную j. Если после окончания цикла k<3, выводим сообщение, что в массиве меньше трех положительных элементов, иначе выводим значение переменной j.

Решение на Паскале.

const N=30;

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

I, j, k: integer;

begin

for i:=1 to N do readln(a[i]);

k:=0;

for i:=1 to N do

if a[i] > 0 then begin

k:=k+1;

if k = 3 then j := i;

end;

if k < 3 then

writeln('Меньше трех положительных элементов')

else writeln(j);

end.

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

Паскаль

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

const N=30;

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

i, l, lmax, s, smax: integer;

begin

for i:=1 to N do readln(a[i]);

...

end.

Объявляем массив A из 30 элементов. Объявляем целочисленные переменные i, l, lmax, s, smax.

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

...

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

Обратим внимание, что нужно найти не длину, а сумму наибольшей (то есть, самой длинной!) возрастающей последовательности (то есть, такой, в которой каждый следующий элемент строго больше предыдущего). В переменных l и s будем хранить длину и сумму текущей (рассматриваемой сейчас) последовательности, а в переменных lmax и smax – значения для наибольшей последовательности.

Решение на естественном языке. Записываем в переменную lmax начальное значение 0, в переменную l – значение 1, а в переменную smax – значение первого элемента массива. В цикле рассматриваем все элементы массива, начиная со 2-ого до 30-ого. Если очередной элемент больше предыдущего, увеличиваем переменную l на 1, а к переменной s добавляем значение этого элемента; иначе записываем 1 в переменную l и значение этого элемента в s. После этого (в теле цикла) сравниваем l и lmax; если l > lmax (нашли новую самую длинную возрастающую цепочку), записываем значение s в smax.

Решение на Паскале.

const N=30;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]