![]() |
|
Модераторы: bsa |
![]()
|
|
| Robix |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 1.6.2009 Репутация: нет Всего: нет |
Дорый день. Помогите пожалуйста небольшую логику на c++ выполнить.
Имеется двумерный массив MyArray . Содержание его примерно такое: Индекс0.....Индекс1 capture1.....track1 release1.....track1 release2.....track1 release3.....track1 capture2.....track1 capture3.....track2 release4.....track2 release5.....track2 Т.е. у него всегда два индекса. В первом индексе всегда только либо capture, либо release с добавлением порядкового номера, начинающегося с единицы и так далее растущегов рамках всего массива. Во втором индексе всегда track также с добавлением порядкового номера по такому же принципу. Требуется сформировать новый массив ResultArray, в который должны попасть все release'ы, которые в рамках своего track (track это как ключ, который объединяет в своих рамках capture и release) отвечают такому условию: После release сразу или через другие release'ы идет capture и сразу перед release не capture. В данному случае под условие попадут release2 и release3. |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
Задача решается 2мя проходами по массиву. В первом проходе производится поиск индексов последних capture? для каждого track? (для этого можно завести map<string,Track> в котором ключем будет использован track? из исходного массива, а в стрктуре Track будет собираться информация о входах capture?)
Во 2м проходе осуществляется поиск необходимых release? (использованием того же map'а). В структуре Track должен быть флаг, который взводится при встрече capture? и сбрасывается в противном случае. release? попадает на выход если его индекс меньше последнего capture? и вышеупомянутый флаг не взведен |
|||
|
||||
| Robix |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 1.6.2009 Репутация: нет Всего: нет |
Не понял насчет того, что и как попадет с структуру Trackв map<string,Track>
Если несложно, можете код написать пожалуйста. |
|||
|
||||
| sQu1rr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 597 Регистрация: 11.11.2008 Где: london Репутация: 3 Всего: 13 |
А мне кажется, что можно и в один проход, если начинать с конца Добавлено через 21 секунду Тогда вам в центр помощи |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
Все равно в 1 не получится, из за требования - оно требует анализа предыдущего элемента
Это сообщение отредактировал(а) xvr - 18.11.2014, 20:48 |
|||
|
||||
| sQu1rr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 597 Регистрация: 11.11.2008 Где: london Репутация: 3 Всего: 13 |
|
|||
|
||||
![]()
|
| Правила форума "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. |