Здравствуйте, есть массив классов в которых есть поля фамилия ID счета доход и расход.
Нужно найти человека с наибольшим вкладом. У одного человека может быть несколько счетов, вот что меня затормозило слегка. Нужно вывести фамилию из массива типа
T mass[] {"asdf",123123123,100,150}......asdf может встречаться сколь угодно раз
с уникальными фамилиями все яснее ясного — минимакс разницы расхода-дохода. Как лучше обработать повторы . Работа с динамическими массивами впереди(это поэтапный курсач друга) . Как решить вопрос с несколькими счетами у одной фамилии?
Здравствуйте, _CODER_, Вы писали:
_CO>T mass[] {"asdf",123123123,100,150}......asdf может встречаться сколь угодно раз _CO>с уникальными фамилиями все яснее ясного — минимакс разницы расхода-дохода. Как лучше обработать повторы . Работа с динамическими массивами впереди(это поэтапный курсач друга) . Как решить вопрос с несколькими счетами у одной фамилии?
ты сразу напиши список того что вы уже проходили. а то тебе тут понапишут на gnu c++14 + openmp
_CO>Здравствуйте, есть массив классов в которых есть поля фамилия ID счета доход и расход. _CO>Нужно найти человека с наибольшим вкладом. У одного человека может быть несколько счетов, вот что меня затормозило слегка. Нужно вывести фамилию из массива типа
_CO>T mass[] {"asdf",123123123,100,150}......asdf может встречаться сколь угодно раз _CO>с уникальными фамилиями все яснее ясного — минимакс разницы расхода-дохода. Как лучше обработать повторы . Работа с динамическими массивами впереди(это поэтапный курсач друга) . Как решить вопрос с несколькими счетами у одной фамилии?
Тогда сначала отсортируй массив по фамилиям. Сразу полегчает.
_CO>T mass[] {"asdf",123123123,100,150}......asdf может встречаться сколь угодно раз _CO>с уникальными фамилиями все яснее ясного — минимакс разницы расхода-дохода. Как лучше обработать повторы . Работа с динамическими массивами впереди(это поэтапный курсач друга) . Как решить вопрос с несколькими счетами у одной фамилии?
Офтоп. Чет я не понял. У тебя в 2010 были вопросы по винапи и опенссл. В 2016 ты не можешь решить такое?
Онтоп.
* заведи map<string, int> и накапливай в нем баланс или
* предварительно отсортируй или
* (если не пугает O(n*n)) в цикле перебираешь элементы, во внутреннем цикле ищешь элементы с такими же ФИО, находишь баланс для ФИО, сравниваешь с текущим максимумом
Вообще-то это классическая задача для СУБД.
Так и просится Select From... etc.
Но раз уж требуется реализовать именно на C/C++, то как-то так:
1. Формирование списка вкладчиков из исходного массива. Каждый вкладчик будет иметь только 1 уникальную запись.
2. В цикле пробежаться по списку вкладчиков и при этом выбирать из исходного массива данные по каждому вкладчику с суммированием всех остатков на счетах.
3. Дальнейшее вычисление "человека с наибольшим вкладом" тривиально.
Здравствуйте, _CODER_, Вы писали:
_CO>с уникальными фамилиями все яснее ясного — минимакс разницы расхода-дохода. Как лучше обработать повторы . Работа с динамическими массивами впереди(это поэтапный курсач друга) . Как решить вопрос с несколькими счетами у одной фамилии?
1) группировка (сортировка — как более строгий вариант группировки) масссива по фамилии, затем забег по массиву, суммирование и запоминание максимума
2) динамическая таблица текущих сумм для фамилий, забег по массиву с суммированием по ключу, затем забег по таблице в поисках максимума
3) развёртывание сиквел-сервера (sqlite, например), и написать суммирующий-группирующий запрос
select surname, sum(debit)-sum(credit) as total
from accounts
group by surname
order by total desc
limit 1