
Дан целочисленный массив из 30 элементов. Элементы массива могут принимать произвольные целые
значения. Опишите на русском языке или на одном из языков программирования алгоритм, который находит и выводит второй максимум массива (элемент, который в отсортированном по невозрастанию массиве стоял бы вторым). Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из них. const N = 30; var a: array [1..N] of integer; i, k, max, max2: integer; begin for i: =1 to N do readln(a[i]); ... end.

Ответы на вопрос

program p1;
uses crt; вывод окошка
const N = 30;
var a: array [1..N] of integer;
i, max, max2 :integer;
begin
for i:=1 to N do begin вывод элементов массива с помощью рандома
a[i]:= random (100);
write( a[i]:4);
end;
writeln;
max:= a[1]; принимаем первый элемент массива за макс
max2:= a[1]; принимаем первый элемент массива за макс
for i:=1 to N do begin находим первый max
if max<a[i] then
max:= a[i];
end;
for i:=1 to N do begin находим второй max2
if (max2<a[i]) and ( a[i]<> max) then
max2:= a[i];
end;
writeln('max=',max);
writeln('max2=',max2);
end.



Для нахождения второго максимума в массиве можно воспользоваться простым алгоритмом без использования дополнительных переменных. В коде ниже представлено решение на языке программирования Pascal:
pascalconst N = 30; var a: array [1..N] of integer; i, max, max2: integer; begin for i := 1 to N do readln(a[i]); { Находим первый максимум в массиве } max := a[1]; for i := 2 to N do begin if a[i] > max then max := a[i]; end; { Находим второй максимум в массиве } max2 := a[1]; for i := 2 to N do begin if (a[i] > max2) and (a[i] < max) then max2 := a[i]; end; writeln('Второй максимум массива: ', max2); end.
Описание алгоритма:
- Сначала находим первый максимум в массиве. Для этого проходим по всем элементам массива и сохраняем максимальное значение в переменную
max
. - Затем ищем второй максимум. Для этого проходим снова по всем элементам массива и сравниваем их с
max2
иmax
. Если элемент большеmax2
и меньшеmax
, то обновляем значениеmax2
. - После окончания второго цикла,
max2
будет содержать второй максимум массива. - Выводим найденное значение на экран.
Таким образом, алгоритм находит и выводит второй максимум в массиве без использования дополнительных переменных.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili