|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
07.04.2013, 13:15 | #1 |
Регистрация: 07.04.2013
Сообщений: 8
|
Поиск максимума
Дано N чисел. Нужно найти максимум среди них и вывести на экран.
N - это большое число (N>10000) и оно вводится пользователем в начале программы, т.е. числа нельзя заносить в массив. Еще желательно, чтобы программа выводила первые три максимума. К примеру пользователь вводит: 20000 - кол-во чисел 123 34 567 5676 67 45 101 ...... Программа выводит 1: 5676 2: 567 3: 123 |
07.04.2013, 15:51 | #2 |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
Вы всерьез предлагаете пользователю вводить более 10000 чисел с клавиатуры?
|
07.04.2013, 19:45 | #3 |
Пользователь
Регистрация: 24.01.2013
Сообщений: 67
|
Надолбить 10000 чисел на клавиатуре это дело хозяйское.
Поскольку язык программирования покрыт мраком то в общем виде Может быть так Алгоритм. Код:
|
07.04.2013, 20:38 | #4 |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
interacia, предложу более простой и универсальный (на мой взгляд) вариант алгоритма.
Во-первых, заводим массив длиной с количество необходимых для вывода чисел. В нашем конкретном случае - длиной 3. Но в любой момент можно будет простым переопределением единственной константы, выводить 5, 20 или 100 наибольших чисел. А при использовании динамического массива даже задавать количество выводимых "максимумов" с клавиатуры без перекомпиляции программы. А во-вторых, сравнивать текущее число, начиная не с наибольшего, а с наименьшего числа, если оказалось больше, то занести его вместо этого элемента, после чего в цикле от наименьшего к наибольшему сравнивать два соседних числа и при необходимости менять их местами (пузырек). Последний раз редактировалось s-andriano; 07.04.2013 в 20:41. |
07.04.2013, 21:26 | #5 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,298
|
s-andriano, пусть в массиве на 3 элемента хранятся числа 3 2 1. Текущее число 2. Оно больше наименьшего, следовательно заменит 1. В массиве будет 3 2 2.
Нужно обговорить момент - требуется получить K максимумов из всех чисел (т.е. как если бы взяли последовательность, отсортировали по возрастанию и взяли K последних чисел) или K уникальных максимумов (если бы из отсортированной последовательности выбросили все повторы и взяли те же K последних).
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
07.04.2013, 22:15 | #6 |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
BDA, согласен с обоими замечаниями.
1. В принципе, необходимо отслеживать границу заполненной части массива, и сравнивать текущий элемент не с последним, а именно с "граничным", и если граница не достигла конца массива вместе с "пузырьком" пускать "камень", т.е. элемент, обменами перемещающийся вниз по массиву. Пока молчаливо подразумевается, что граница уйдет за пределы массива, но в общем случае это не так. 2. Да, хотя интуитивно представляется, что каждый максимум уникален (раз представлен отдельным числом), то его следует отдельно сохранять (вместе с ним, кстати, может понадобиться сохранять и что-то еще, например, абсолютную позицию или номер). Но, в принципе, может потребоваться и вариант, при котором максимумы одинаковой величины считаются неразличимыми, и их нужно "прореживать". В этом случае. По крайней мере, текущей формулировке такой вариант не противоречит. В этом случае добавляется лишний цикл, проверяющий, есть ли уже в массиве такой элемент. И производить вставку, только если нет. Последний раз редактировалось s-andriano; 07.04.2013 в 22:20. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
поиск максимума из четных элементов | Yakov112 | Общие вопросы C/C++ | 1 | 16.10.2012 20:09 |
последовательность чисел - поиск максимума, второго после максимума значения, количество чисел равных максимуму | wasy96 | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 28.09.2011 01:19 |
Поиск максимума | sp_Иришка | Общие вопросы C/C++ | 9 | 17.12.2009 15:18 |
поиск второго максимума | Arcueid1691 | Общие вопросы C/C++ | 7 | 15.10.2009 22:43 |
Поиск Максимума в двумерном массиве | NSvirus | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 3 | 20.09.2009 18:04 |