Консультация № 130186
02.04.2008, 11:50
0.00 руб.
0 4 3
Здравствуйте, уважаемые эксперты, помогите пожалуйста составить алгоритм решения этой задачи. Или блок схему или программу или просто объясните как это работает.
3.
В одномерном целочисленном массиве из N элементов определить, сколько раз встречается наибольший элемент.
Заранее спасибо

Обсуждение

Неизвестный
02.04.2008, 12:13
общий
это ответ
Здравствуйте, Николай Фаворисович Басманов!

Ну так как у тебя в вопросе не указан конкретный язык программирования, то алгоритм я тебе дам в словесной форме.
Заведи две переменных... одна будет содержать найденный максимальный элемент... а во вторую будешь использовать как счетчик найденных максимальных элементов.
Правда придется прогонять твой массив по циклу 2 раза.
Первый раз чтобы определить максимальное значение, а второй чтобы посчитать сколько раз оно встречается.
Для определения максима проще всего использовать следующий алгоритм.
1. Пусть твою переменную для краткости назовем М. Присвоим ее в 0.
2. В цикле последовательно сравниваем ее каждым элементом.
3. Если элемент больше М тогда М присваиваем значение элемента
На выходе мы получим М равное максимальному значению.
Для нахождения вхождений используем похожий алгоритм только там мы сравниваем полученное М с текущим элементом и если они равны то увеличиваем наш счетчик.
Неизвестный
02.04.2008, 12:39
общий
это ответ
Здравствуйте, Николай Фаворисович Басманов!
Для простоты объяснения назовём Ваш массив X(N)

Можно поступить так:
1. Циклом от 0 до N определяем максимальное и минимальное число в массиве - MIN и MAX (минимальное надо, если могут быть отрицательные числа, если их не предусматривается, то MIN = 0)
2. Определяем новый массив целых чисел Kol() с количеством элементов Kol(MAX-MIN+1)
3. Проходим цикл от 0 до N и делаем проверку
Kol(X(N)-MIN)=Kol(X(N)-MIN)+1
4. Находим в цикле от 0 до MAX-MIN+1 максимальный элемент массива Kol()
Его номер в массиве + MIN и даст число , встречающееся чаще других, а его значение - сколько раз оно встречается
Неизвестный
02.04.2008, 15:38
общий
это ответ
Здравствуйте, Николай Фаворисович Басманов!
Можно обойтись и одним проходом по массиву:
Массив Х(N)
Заводим 2 переменные:
Хmax - для хранения наибольшего элемента массива
count - для подсчёта того, сколько раз встречается наибольший элемент
Присваиваем
Хmax = Х(1)
count = 1
Далее организуем цикл по i от 2 до N (перебираем все элементы массива, начиная со второго)
В цикле проводим две проверки:
если Х(i) == Хmax, то count = count + 1
если Х(i) > Хmax, то Хmax = Х(i) и count = 1
После окончания цикла переменная count будет число, равное тому сколько раз встречается в массиве наибольший элемент
Неизвестный
02.04.2008, 18:09
общий
Извините, а можно блок схему нарисовать?
Форма ответа