|
1 / 1 / 0
Регистрация: 23.11.2010
Сообщений: 136
|
||||||
Перенести элементы из одного вектора в другой21.06.2019, 19:10. Показов 7887. Ответов 47
Я не могу понять, почему если убрать erase и else ++k , то выборка элементов из первого массива работает,как надо, но при таких условиях я не смогу удалить из начального passengers уже использованные пути пользователей. Если же оставить как есть, то он переносит в массив active_users не только нужные, но и лишние элементы, не соответствующие условиям в скобках. Поясню. Я выбираю по задачае только те элементы, где при направлении вверх, этаж назначения больше этажа отправления и наоборот для направления вниз. Но при данной реализации erase у меня могут выбраться и лишние, т.е. для движения вверх он перенесет часть пользователей, которым надо вниз из passengers в active_users. Понятно, что ошибка в вычислениях моих, но где я не увидел? Даже вложил файл с полным кодом.
0
|
||||||
| 21.06.2019, 19:10 | |
|
Ответы с готовыми решениями:
47
Перенести элементы одного вектора в другой Как перенести элементы из одного массива в другой? Перенести все кратные 5 элементы из одного массива в другой |
|
1 / 1 / 0
Регистрация: 23.11.2010
Сообщений: 136
|
|
| 21.06.2019, 21:14 [ТС] | |
|
Ну код я тот кидал, нет других, но кину еще раз. Единственное, что я мог спецом erase и итератор на passengers комментировать и наоборот. Сейчас я скину комментированный erase вариант. Попробую расскоментировать и глянуть на loaded. По факту он всегда загружается, так как я в rule- файле (main) задаю два вектора совпадающих.
0
|
|
|
1 / 1 / 0
Регистрация: 23.11.2010
Сообщений: 136
|
||
| 21.06.2019, 21:20 [ТС] | ||
|
не, заполняется он всегда при обоих вариантах. Хоть расскоментируй, хоть заккоментируй - проверил.
Добавлено через 2 минуты
0
|
||
|
6354 / 3525 / 1428
Регистрация: 07.02.2019
Сообщений: 9,008
|
|
| 21.06.2019, 21:20 | |
|
пардон, я не туда смотрел, загружается, но active_users заполняется только один раз при запуске программы и не изменяется, не вижу где в коде это
0
|
|
|
1 / 1 / 0
Регистрация: 23.11.2010
Сообщений: 136
|
|
| 21.06.2019, 21:32 [ТС] | |
|
ну вот, поиск сужается. Вижу, это другое описание проблемы, точнее, даже расширение ее понимания.
Добавлено через 2 минуты zayats80888, Хотя нет, active_users тоже меняет размер, если вставить breakpoint - insert breakpoint. Если просто F9 жать, не меняет, а лишь при запуске, а если брейкпойнт правой кнопкой мыши добавить, то меняет размер, заполняется. Хм, какого лешего у меня есть и Elevation::active_users и active_users. Вот это перепроверю. Причем если щелкнуть по второму укзавает на первый.
0
|
|
|
6354 / 3525 / 1428
Регистрация: 07.02.2019
Сообщений: 9,008
|
|
| 21.06.2019, 21:34 | |
|
Что я понял: код который вы показали в топике(с удалением из passengers) выполняется только один раз вначале, тогда же и заполняется active_users. Дальше выбирается самый дальний этаж этаж назначения(из active_users). Далее запускается цикл, пока не доедем до этого дальнего этажа, в котором на каждой итерации производятся манипуляции с loaded(не особо вникал) и active_users(который не меняется). Вектор passangers в цикле вообще не задействован. По достижении дальнего этажа программа завершается. Вот я и не пойму логику всего этого действия.
0
|
|
|
1 / 1 / 0
Регистрация: 23.11.2010
Сообщений: 136
|
|
| 21.06.2019, 21:36 [ТС] | |
|
Логика - доехать до дальнего этажа несколькими людьми. Раньше вообще лишь один человек катался.
0
|
|
|
1 / 1 / 0
Регистрация: 23.11.2010
Сообщений: 136
|
|
| 21.06.2019, 21:38 [ТС] | |
|
Вот, меняется. Они не могут не меняться, они еще в конце выводятся в тексте.
0
|
|
|
6354 / 3525 / 1428
Регистрация: 07.02.2019
Сообщений: 9,008
|
|
| 21.06.2019, 21:44 | |
|
0
|
|
|
1 / 1 / 0
Регистрация: 23.11.2010
Сообщений: 136
|
||
| 21.06.2019, 21:56 [ТС] | ||
|
Так же в дальшнейшем будет passengers меняться постоянно, ну реально же лифтом кто-то всегда хочет пользоваться. Это может быть либо время, либо реквест через графику. И active_users своего рода производная что-ли passengers будет так же работать, меняться. А если я с passengers не решу, то получу миллион одинаковых пользователей. Добавлено через 8 минут Если лифт движется к пользователю вверх то он не может взять пользователя, который нажмет кпопку вниз. Логично. Так же, если лифт проехал третий этаж, и движется с 5-го на 100-й то пассажир с третьего этажа подождет. Вот такая логика. Ну есть возможность добавить несколько лифтов, усложнить логику. но надо начинать с простого.
0
|
||
|
6354 / 3525 / 1428
Регистрация: 07.02.2019
Сообщений: 9,008
|
|||
| 21.06.2019, 22:00 | |||
Сообщение было отмечено streamc как решение
Решениеdirect[std::distance(passengers.begin(), k)] на direct.back() и убедитесь что direct[0] действителен еще до начала выборкиДобавлено через 2 минуты streamc, как работаю лифты я знаю, мне трудно понять логику конкретно вашего лифта
1
|
|||
|
1 / 1 / 0
Регистрация: 23.11.2010
Сообщений: 136
|
||||
| 21.06.2019, 22:15 [ТС] | ||||
|
Добавлено через 9 минут Я еще тщательнее и нормально все послезавтра буду делать. zayats80888 Спасибо!
0
|
||||
|
6354 / 3525 / 1428
Регистрация: 07.02.2019
Сообщений: 9,008
|
||
| 21.06.2019, 22:20 | ||
1
|
||
|
1 / 1 / 0
Регистрация: 23.11.2010
Сообщений: 136
|
|||||||
| 21.06.2019, 22:24 [ТС] | |||||||
Добавлено через 42 секунды Над этим лифтом еще очень много работы, как и с архитектуры. оптимизации, программирования, переделеки, конкретики. И так же создателю лифта учиться надо проектированию лифта.
0
|
|||||||
|
6354 / 3525 / 1428
Регистрация: 07.02.2019
Сообщений: 9,008
|
||
| 21.06.2019, 22:28 | ||
|
Кстати амперсанд убирать не нужно было, т. к. int* dst_floor_end = NULL; я просто всего кода не видел еще тогда
1
|
||
|
1 / 1 / 0
Регистрация: 23.11.2010
Сообщений: 136
|
||
| 21.06.2019, 22:30 [ТС] | ||
|
0
|
||
|
6354 / 3525 / 1428
Регистрация: 07.02.2019
Сообщений: 9,008
|
||
| 21.06.2019, 22:32 | ||
|
0
|
||
|
1 / 1 / 0
Регистрация: 23.11.2010
Сообщений: 136
|
|
| 21.06.2019, 22:51 [ТС] | |
|
Да, рано радоваться. Поменял этажность с 20 до 200. Теперь он опять вниз катается, когда вверх надо. Точнее, катится вверх, но берет пользователей, которым надо вниз. надо еще больше думать над объектами изменяемыми в ходе итерации, будь то сами итераторы или объекты внутри циклов, условий.
Добавлено через 5 минут О, сейчас и на 20 не заработал. Добавлено через 7 минут Хм. или я масивы уже путать стал. вновь работает. все-таки большую выборку не обманешь.
0
|
|
|
1 / 1 / 0
Регистрация: 23.11.2010
Сообщений: 136
|
|
| 22.06.2019, 21:47 [ТС] | |
|
Так. Проверил на коде с floor_count=200. До этого времени со вчерашней ночи прогу не трогал.
Он делает выборку не всех пассажиров. Придется точно засесть. P.S. Насчет логики лифта, он должен захватывать всех пассажиров по пути к первому пассажиру, если может. В нем такого нет. Реализовать не так и сложно. Доделаю. Ясно, что логика кажется странной. По факту и вес можно добавить. Типа не брать больше определенного количества пассажиров, как пример. Да много чего. При двадцати этажах работает нормально, при двухсот чаще тоже, но иногда - нет. Значит, ошибка. Неважно, в алгоритме (нет, там ничего сложного нет), еще чем-то, методах или даже компиляции. нужен результат 100 процентов. Хотя я уже на данном этапе могу улучшать работу лифта и сделать подхват пассажиров. Добавлено через 4 минуты int level_floor = std::get<2>(*std::max_element(active_use rs.begin(), active_users.end(), А вот тут логическая ошибка у меня. Я делаю максимум назначения по максимальному назначению этажей входящих в диапазон отправления. По факту максимум там рядом не стоял. проверяется на больших размерностях. Но это исправимо и не напрягает. Напрягало, что он мог вниз поехать. Но вот не вижу этого пока. Не вижу.
0
|
|
|
6354 / 3525 / 1428
Регистрация: 07.02.2019
Сообщений: 9,008
|
|
| 22.06.2019, 21:51 | |
|
streamc, все в ваших руках
Могу посоветовать взять карандаш и листок бумаги, и хорошенько все обдумать, затем приступать к реализации. Я ваш код переделывать не хочу, мне проще заново написать, но вам это вряд ли поможет, судя по вашему энтузиазму, так что дерзайте. Если что, спрашивайте (только хорошо сформулируйте вопрос в отдельной теме, т.к. эту мы сильно загадили )
0
|
|
|
1 / 1 / 0
Регистрация: 23.11.2010
Сообщений: 136
|
||||
| 22.06.2019, 21:57 [ТС] | ||||
|
zayats80888,
Да, он не доделан, и где-то это очевидно, как с тем, что я написал. У вас все-равно будет своя реализация. for (vector<vec>::iterator k=vec.begin(); it!=vec.end(); /*it++*/) { if() lalala; else ++it; } Если сделать два if программа может весело себя вести. Я еще проверю на том коде.
0
|
||||
| 22.06.2019, 21:57 | |
|
Как перенести все отрицательные элементы из одного массива в другой. Все элементы вектора, которые встречаются более одного раза, переписать в другой вектор Из одного массива сделать два массива, в один перенести четные элементы, в другой нечетные Из массива перенести четные элементы в другой массив.А нечетные перенести в другой массив Четные числа вектора перенести в другой список Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей.
Самым главным критерием для. . .
|
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store.
И так:
1. Скачиваем с. . .
|
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге).
Задача:
Программно добавить префикс в нумерацию документов.
Решение:
В модуле объекта. . .
|
После закрытия оутлука продолжает висеть процесс в диспетчере задач
Maks 27.10.2026
С недавнего времени в продакшене возникла проблема: при закрытии оутлука в диспетчере задач продолжал висеть процесс outlook. exe. Проблема возникла после установки MS Office 2021 LTSC на машинах, под. . .
|
|
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него.
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952
Инструкция внутри.
https:/ / youtu. be/ VpfFZSUDGnQ. . .
|
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности.
Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
|
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version
Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
|
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер
На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
|