![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 07.04.2013
Сообщений: 8
|
![]()
Дано N чисел. Нужно найти максимум среди них и вывести на экран.
N - это большое число (N>10000) и оно вводится пользователем в начале программы, т.е. числа нельзя заносить в массив. Еще желательно, чтобы программа выводила первые три максимума. К примеру пользователь вводит: 20000 - кол-во чисел 123 34 567 5676 67 45 101 ...... Программа выводит 1: 5676 2: 567 3: 123 |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
![]()
Вы всерьез предлагаете пользователю вводить более 10000 чисел с клавиатуры?
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 24.01.2013
Сообщений: 67
|
![]()
Надолбить 10000 чисел на клавиатуре это дело хозяйское.
Поскольку язык программирования покрыт мраком то в общем виде Может быть так Алгоритм. Код:
|
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
![]()
interacia, предложу более простой и универсальный (на мой взгляд) вариант алгоритма.
Во-первых, заводим массив длиной с количество необходимых для вывода чисел. В нашем конкретном случае - длиной 3. Но в любой момент можно будет простым переопределением единственной константы, выводить 5, 20 или 100 наибольших чисел. А при использовании динамического массива даже задавать количество выводимых "максимумов" с клавиатуры без перекомпиляции программы. А во-вторых, сравнивать текущее число, начиная не с наибольшего, а с наименьшего числа, если оказалось больше, то занести его вместо этого элемента, после чего в цикле от наименьшего к наибольшему сравнивать два соседних числа и при необходимости менять их местами (пузырек). Последний раз редактировалось s-andriano; 07.04.2013 в 20:41. |
![]() |
![]() |
![]() |
#5 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,430
|
![]()
s-andriano, пусть в массиве на 3 элемента хранятся числа 3 2 1. Текущее число 2. Оно больше наименьшего, следовательно заменит 1. В массиве будет 3 2 2.
Нужно обговорить момент - требуется получить K максимумов из всех чисел (т.е. как если бы взяли последовательность, отсортировали по возрастанию и взяли K последних чисел) или K уникальных максимумов (если бы из отсортированной последовательности выбросили все повторы и взяли те же K последних).
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись
![]() |
![]() |
![]() |
![]() |
#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 |