Advertisement
Guest User

yallow_belt

a guest
Apr 21st, 2019
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.84 KB | None | 0 0
  1. #include <iostream>
  2. #include <map>
  3. #include <set>
  4. #include <vector>
  5.  
  6. //#include <string>
  7.  
  8. using namespace std;
  9.  
  10.  
  11. // Перечислимый тип для статуса задачи
  12. enum class TaskStatus {
  13.   NEW,          // новая
  14.   IN_PROGRESS,  // в разработке
  15.   TESTING,      // на тестировании
  16.   DONE          // завершена
  17. };
  18.  
  19. // Объявляем тип-синоним для map<TaskStatus, int>,
  20. // позволяющего хранить количество задач каждого статуса
  21. using TasksInfo = map<TaskStatus, int>;
  22.  
  23. class Slave;
  24. //class TeamTasks;
  25.  
  26.  
  27.  
  28. class TeamTasks
  29. {
  30. public:
  31.         // Получить статистику по статусам задач конкретного разработчика
  32.         const TasksInfo& GetPersonTasksInfo(const string& person) const;
  33.    
  34.     // Добавить новую задачу (в статусе NEW) для конкретного разработчитка
  35.     void AddNewTask(const string& person);
  36.    
  37.     // Обновить статусы по данному количеству задач конкретного разработчика,
  38.     // подробности см. ниже
  39.     tuple<TasksInfo, TasksInfo> PerformPersonTasks(
  40.         const string& person, int task_count);
  41.  
  42.     //friend class Slave;
  43.  
  44. private:
  45.     set <Slave> employees;
  46. };
  47.  
  48. const TasksInfo& TeamTasks::GetPersonTasksInfo(const string& person) const
  49. {
  50.  
  51. }
  52.  
  53. void TeamTasks::AddNewTask(const string& person)
  54. {
  55.     for (auto & i : employees)
  56.     {
  57.  
  58.         if (i == )
  59.     }
  60. }
  61.  
  62. tuple<TasksInfo, TasksInfo> TeamTasks::PerformPersonTasks(const string& person, int task_count)
  63. {
  64.  
  65. }
  66.  
  67.  
  68.  
  69. class Slave
  70. {
  71. public:
  72.     Slave(const string & s)
  73.     {
  74.         this->name = s;
  75.         this->tasks.insert({TaskStatus::NEW, 0});
  76.     }
  77.  
  78.     void Add()
  79.     {
  80.         ++this->tasks[TaskStatus::NEW];
  81.     }
  82.  
  83.     const string & GetName() const
  84.     {
  85.         return this->name;
  86.     }
  87.  
  88.     ~Slave();
  89.  
  90.     //friend class TeamTasks;
  91.     //friend void TeamTasks::AddNewTask(const string& person);
  92.    
  93. //private:
  94.     string name;
  95.     TasksInfo tasks;
  96. };
  97.  
  98. bool operator<(const Slave & s1, const Slave & s2)
  99. {
  100.     return s1.GetName() < s2.GetName();
  101. }
  102.  
  103. bool operator==(const Slave & s1, const Slave & s2)
  104. {
  105.     return (!(s1.GetName() < s2.GetName())&&!(s2.GetName() < s1.GetName()));
  106. }
  107.  
  108.  
  109.  
  110.  
  111.  
  112. // Принимаем словарь по значению, чтобы иметь возможность
  113. // обращаться к отсутствующим ключам с помощью [] и получать 0,
  114. // не меняя при этом исходный словарь
  115. void PrintTasksInfo(TasksInfo tasks_info)
  116. {
  117.     cout << tasks_info[TaskStatus::NEW] << " new tasks" <<
  118.       ", " << tasks_info[TaskStatus::IN_PROGRESS] << " tasks in progress" <<
  119.       ", " << tasks_info[TaskStatus::TESTING] << " tasks are being tested" <<
  120.       ", " << tasks_info[TaskStatus::DONE] << " tasks are done" << endl;
  121. }
  122.  
  123. int main() {
  124.   TeamTasks tasks;
  125.   tasks.AddNewTask("Ilia");
  126.   for (int i = 0; i < 3; ++i) {
  127.     tasks.AddNewTask("Ivan");
  128.   }
  129.   cout << "Ilia's tasks: ";
  130.   PrintTasksInfo(tasks.GetPersonTasksInfo("Ilia"));
  131.   cout << "Ivan's tasks: ";
  132.   PrintTasksInfo(tasks.GetPersonTasksInfo("Ivan"));
  133.  
  134.   TasksInfo updated_tasks, untouched_tasks;
  135.  
  136.   tie(updated_tasks, untouched_tasks) =
  137.       tasks.PerformPersonTasks("Ivan", 2);
  138.   cout << "Updated Ivan's tasks: ";
  139.   PrintTasksInfo(updated_tasks);
  140.   cout << "Untouched Ivan's tasks: ";
  141.   PrintTasksInfo(untouched_tasks);
  142.  
  143.   tie(updated_tasks, untouched_tasks) =
  144.       tasks.PerformPersonTasks("Ivan", 2);
  145.   cout << "Updated Ivan's tasks: ";
  146.   PrintTasksInfo(updated_tasks);
  147.   cout << "Untouched Ivan's tasks: ";
  148.   PrintTasksInfo(untouched_tasks);
  149.  
  150.   return 0;
  151. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement