Вопрос задан 16.07.2023 в 15:06. Предмет Информатика. Спрашивает Макаров Андрей.

Дан одномерный массив из n целых чисел требуется написать функцию которая посчитает сколько раз в

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

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

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Константинопольский Владимир.

===== 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.  


0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Вот пример функции на языке Python, которая решает данную задачу:

python
def 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 принимает этот список в качестве аргумента и выполняет следующие действия:

  1. Находит максимальное число в массиве с помощью функции max.
  2. Считает количество вхождений максимального числа в массиве с помощью метода count.
  3. Если количество вхождений максимального числа равно длине массива, значит все элементы массива одинаковы и нет следующего максимума после него. В этом случае функция возвращает 0.
  4. Иначе, функция ищет следующий максимум, который должен быть меньше максимального числа. Она проходит по всем элементам массива и выбирает наибольшее из тех, которые удовлетворяют условию.
  5. Подсчитывает количество вхождений этого следующего максимума в массиве.
  6. Возвращает количество вхождений следующего максимума после максимального числа.

Пример вывода программы:

Введите элементы массива, разделенные пробелом: 6 10 10 12 8 1 Количество встреч следующих за максимальным элементов: 2

В данном случае введенный массив [6, 10, 10, 12, 8, 1] имеет максимальное число 12, и после него встречаются два раза следующий максимум - число 10.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос