
Дан одномерный массив из n целых чисел требуется написать функцию которая посчитает сколько раз в
этом массиве встречается элементы следующий за максимальным в порядке убывания. Формат входных данных массив должен быть введен с клавиатуры. Пример: 6 10 10 12 8 1 #элементы массива 2 # два раза встретился второй максимум

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

===== PascalABC.NET =====
function ЧислоВторыхМаксимумов(a: array of integer) :=
a.GroupBy(p -> p) // сгруппировали одинаковые
.Select(p -> (p.Count, p.Key)) // создали кортежи (кол, значение)
.OrderByDescending(p -> p[1]) // отсортировали по убыванию значений
.Skip(1) // пропустили первый элемент
.Take(1) // взяли только второй элемент
.Select(p -> p[0]); // выделили из кортежа количество
begin
var n:=ReadInteger('n ='); // длина массива
var a:=ArrRandom(n, 1, 10); // инициализируем массив
a.Println; // выводим его
ЧислоВторыхМаксимумов(a).Println // вызываем функцию, выводим результат
end.




Вот пример функции на языке Python, которая решает данную задачу:
pythondef count_next_max_occurrences(arr):
max_num = max(arr)
max_count = arr.count(max_num)
if max_count >= len(arr):
return 0
next_max = None
next_max_count = 0
for num in arr:
if num < max_num and (next_max is None or num > next_max):
next_max = num
next_max_count = 1
elif num == next_max:
next_max_count += 1
return next_max_count
# Пример использования функции:
input_arr = input("Введите элементы массива, разделенные пробелом: ")
arr = list(map(int, input_arr.split()))
occurrences = count_next_max_occurrences(arr)
print("Количество встреч следующих за максимальным элементов:", occurrences)
Программа сначала вводит массив чисел с клавиатуры и разбивает его на список целых чисел. Затем функция count_next_max_occurrences
принимает этот список в качестве аргумента и выполняет следующие действия:
- Находит максимальное число в массиве с помощью функции
max
. - Считает количество вхождений максимального числа в массиве с помощью метода
count
. - Если количество вхождений максимального числа равно длине массива, значит все элементы массива одинаковы и нет следующего максимума после него. В этом случае функция возвращает 0.
- Иначе, функция ищет следующий максимум, который должен быть меньше максимального числа. Она проходит по всем элементам массива и выбирает наибольшее из тех, которые удовлетворяют условию.
- Подсчитывает количество вхождений этого следующего максимума в массиве.
- Возвращает количество вхождений следующего максимума после максимального числа.
Пример вывода программы:
Введите элементы массива, разделенные пробелом: 6 10 10 12 8 1 Количество встреч следующих за максимальным элементов: 2
В данном случае введенный массив [6, 10, 10, 12, 8, 1]
имеет максимальное число 12, и после него встречаются два раза следующий максимум - число 10.


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