![]() |
|
Модераторы: bsa |
![]()
|
|
| resu |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 29.12.2009 Репутация: нет Всего: нет |
Доброй ночи.
Столкнулся с такой проблемой: Есть массив структур с такими полями: Имя, Фамилия, Партия (Данные голосовавшего и партия, за которую он отдал голос). К примеру: Тарас Лопухов ЕдРос Иван Прошкин ЛДПР Петр Иванов Яблоко Илья Панов ЛДПР Василий Увалов ЛДПР Вывод: Максимально часто встречающаяся (выигравшая) партия: ЛДПР. не дай Бог Ниже приведен код, который находит тО, что нужно. Но в нем не рассматривается вариант, если 2 или больше партий набрали одинаково максимальное кол-во голосов. И еще. Я не уверен в правильности алгоритма этого кода. Скорее всего, есть лучший вариант.
Заранее спасибо. Это сообщение отредактировал(а) resu - 29.12.2009, 02:25 |
|||
|
||||
| fry |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 257 Регистрация: 4.10.2006 Репутация: 2 Всего: 3 |
Довольно странно реализованный алгоритм.
Почитай про std::map, на нем легче его реализовать. Пример в книге Страуструпа по одноименному контейнеру.
Мне кажется или последний блок какой то не очень логичный? Просто max = sch[i] и, по сути, = schet, однако далее идет a[max].politicalParty. Вопрос: как связанны индексы для a[] и количество голосов?
schet = 0; ИМХО логичнее (и безопаснее) смотрелся перед for(int j=i+1;j<n;j++). Имена переменных не очень сильно показывают работу кода (читать не очень удобно). => способствует ошибкам
Лично я этого не заметил. Это сообщение отредактировал(а) fry - 29.12.2009, 02:16 |
||||||
|
|||||||
| resu |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 29.12.2009 Репутация: нет Всего: нет |
Прошу прощения. НЕ рассматривается. Пропустил. А мне как раз это нужно. Алгоритм да, странный.
В том то и дело, что подобное использовать нельзя. |
||||
|
|||||
| fry |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 257 Регистрация: 4.10.2006 Репутация: 2 Всего: 3 |
if(sch[i]>sch[0]) - бред, думай, что нужно по смыслу это ведь обычная книжная реализация поиска максимума. if(sch[i]>sch[0]) max = sch[i]; - не полная реализация обработки условия, здесь надо не просто сохранять максимум, но и индекс для него, который используем в cout<<"Winer:"<<a[ ->....<- ].politicalParty<<"\n"; Первый блок вроде ничего. (работать должен)
Ищи второй элемент в sch с таким же значением, что и максимальное. Найдешь его - найдешь и вторую партию с таким же кол-вом балов. |
||||
|
|||||
| resu |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 29.12.2009 Репутация: нет Всего: нет |
Спасибо! Буду пробовать.
|
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |