![]() |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() ![]() |
![]() |
Shmaniche |
![]() ![]()
Сообщение
#1
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 79 Пол: Мужской Репутация: ![]() ![]() ![]() |
Есть программа, которая находит в массиве и выводит значения наиболее часто встречающегося элемента. Но я специально в ней уменьшил размер масссива до 5 элементов и ввел 1, 1, 2, 2, 3. вывелось 1. Как сделать так, чтобы выводились оба значения, т.е. 1 и 2 ?
Вот код:
|
Krjuger |
![]()
Сообщение
#2
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 652 Пол: Мужской Реальное имя: Алексей Репутация: ![]() ![]() ![]() |
Бессмысленная проверка,потому что у вас num всегда будет больше, либо равен нулю. Чтобы вывести несколько результатов,надо,либо выводить их во время подсчета повторений,либо создать массив,в который переписывать все нужные результаты.Как делать,решать вам, решается это просто переносом одной строчки. |
Shmaniche |
![]() ![]()
Сообщение
#3
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 79 Пол: Мужской Репутация: ![]() ![]() ![]() |
Бессмысленная проверка,потому что у вас num всегда будет больше, либо равен нулю. Эта проверка осталась от другого варианта, где я генерил числа случайным образом. решается это просто переносом одной строчки. А что и куда не подскажите? ![]() |
Krjuger |
![]()
Сообщение
#4
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 652 Пол: Мужской Реальное имя: Алексей Репутация: ![]() ![]() ![]() |
Не,насчет 1 строчки с вашим кодом я погорячился.
Самая логичная идея. за первый проход вы узнаете максимальное значение,за второй, выписываете все числа,чье количество равно максимальному.Но для этого понадобиться 2 прохода. |
Федосеев Павел |
![]()
Сообщение
#5
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 298 Пол: Мужской Реальное имя: Федосеев Павел Репутация: ![]() ![]() ![]() |
Цитата Самая логичная идея. за первый проход вы узнаете максимальное значение,за второй, выписываете все числа,чье количество равно максимальному.Но для этого понадобиться 2 прохода. Можно и за один проход, сразу добавляя в список число с максимальным вхождением. А если находится новое значение максимума, то список разрушается и создаётся с вновь обнаруженным числом. Как вариант, ещё можно отсортировать исходный массив, в нём найти максимальное количество вхождений, а вторым проходом вывести все числа, входящие ровно столько раз. |
Shmaniche |
![]()
Сообщение
#6
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 79 Пол: Мужской Репутация: ![]() ![]() ![]() |
Павел, можешь описать первый вариант в виде кода? А то я на словах не очень.
|
Федосеев Павел |
![]()
Сообщение
#7
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 298 Пол: Мужской Реальное имя: Федосеев Павел Репутация: ![]() ![]() ![]() |
Я в C не силён, поэтому на словах.
Приблизительно так... |
Shmaniche |
![]() ![]()
Сообщение
#8
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 79 Пол: Мужской Репутация: ![]() ![]() ![]() |
Павел,в твоем варианте выводится 1, а не 1 и 2. В цикле вывода надо не "i<len-1", а " i<len". Тогда все будет норм.
Сообщение отредактировано: Shmaniche - 27.05.2012 20:04 |
IUnknown |
![]()
Сообщение
#9
|
![]() a.k.a. volvo877 ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация: ![]() ![]() ![]() |
Shmaniche, последний цикл должен выглядеть так:
for(i=0; i<len; i++) printf("%d ", mass[list[i]]); // Тут -1 было явно лишнее |
Shmaniche |
![]()
Сообщение
#10
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 79 Пол: Мужской Репутация: ![]() ![]() ![]() |
|
Федосеев Павел |
![]()
Сообщение
#11
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 298 Пол: Мужской Реальное имя: Федосеев Павел Репутация: ![]() ![]() ![]() |
Да, я запутался. Хотел по-паскалевски, чтобы индекс был от 1, также цикл for в паскале включает границы... Потом начал мудрить и вот результат.
Сообщение отредактировано: Федосеев Павел - 27.05.2012 20:47 |
![]() ![]() |
![]() |
Текстовая версия | 25.06.2024 10:19 |