Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- tuple<TasksInfo, TasksInfo> PerformPersonTasks(const string& person, int task_count) {
- if (InfoPerson_.count(person) == 0) { // если такого разработчика нет
- return {};
- }
- vector<int> number_task_begin(4, 0); // кол-во задач i-го статуса
- for (const auto& [status, num] : InfoPerson_.at(person)) {
- number_task_begin[static_cast<size_t>(status)] = num;
- }
- vector<int> number_task_end = number_task_begin; // кол-во задач i-го статуса
- /*for (const int& num : number_task_begin) {
- cout << num << " ";
- }
- cout << endl;*/
- TasksInfo updated_tasks; // обновленные задачи
- TasksInfo untouched_tasks;
- // РАБОТАЕТ, НО НЕ ЕСТ ТРЕНАЖЕР
- for (size_t i = 0; i < number_task_begin.size() - 1; ++i) { // перевод задач в след. сост.
- if (task_count <= number_task_begin[i]) {
- number_task_end[i] -= task_count;
- updated_tasks[static_cast<TaskStatus>(i + 1)] += task_count;
- InfoPerson_[person][static_cast<TaskStatus>(i + 1)] += task_count;
- untouched_tasks[static_cast<TaskStatus>(i)] = number_task_begin[i] - task_count;
- InfoPerson_[person][static_cast<TaskStatus>(i)] = number_task_end[i];
- number_task_end[i + 1] += task_count;
- break;
- } else {
- updated_tasks[static_cast<TaskStatus>(i + 1)] += number_task_begin[i];
- number_task_end[i + 1] += number_task_begin[i];
- InfoPerson_[person][static_cast<TaskStatus>(i + 1)] += number_task_begin[i + 1];
- task_count -= number_task_begin[i];
- number_task_end[i] -= number_task_begin[i];
- InfoPerson_[person][static_cast<TaskStatus>(i)] = number_task_end[i];
- }
- }
- /*for (const int& num : number_task_end) {
- cout << num << " ";
- }
- cout << endl;*/
- untouched_tasks.erase(TaskStatus::DONE); // все невыполненные задачи
- return {updated_tasks, untouched_tasks};
- }
Advertisement
Add Comment
Please, Sign In to add comment