Advertisement
Guest User

Untitled

a guest
Feb 20th, 2019
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.75 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <string>
  4.  
  5. using namespace std;
  6. struct Plan {
  7. vector<int> days;//числа месяца истинные( индекс -1)
  8. vector<string> what_is_going;// занятия будем писать в строку+=
  9. vector<int> sum_del;// сум занятий на день. Все 3 вектора в структуре должны быть 1 размера, стыкуемся по индексу;
  10. };
  11.  
  12. int main() {
  13. int op;//количество команд из консоли
  14. int NEXT_count = 0;
  15. // буду считать, сколько раз скипнется месяц. И переносить из предыдущего в след, сгребая всё в посл. день нового, если их меньше.
  16. cin >> op;
  17. vector<Plan> v(12);//12 векторов структуры План(0-11). Инициализируем "Январский" вектор
  18. v[0].sum_del.resize(31); for (int i = 0; i < v[0].sum_del.size(); i++) { v[0].sum_del[i] = 0; }//во всех днях января сумма дел пока 0
  19. v[0].days.resize(31); for (int i = 0; i < v[0].days.size(); i++) { v[0].days[i] = i + 1; }//запишем даты 1-31 в вектор интов
  20. v[0].what_is_going.resize(31, "");//нихрена нет на повестке дня во всех числах(пока)
  21. vector<string> command(op);//считывать команду и дальше по ветвлению из иф
  22. //ебаное ветвление:) Черт ногу сломит
  23. for (int i = 0; i < op; i++) {
  24. cin >> command[i];
  25. if (command[i] == "NEXT")
  26. {
  27. int NEXT_count_last = NEXT_count;
  28. NEXT_count += 1;
  29. v[NEXT_count % 12] = v[NEXT_count_last % 12]
  30. ;//если февраль(28 дней);
  31. if (NEXT_count % 12 == 1)
  32. {//если февраль(28 дней)
  33. v[NEXT_count % 12].what_is_going[27] += v[NEXT_count_last % 12].what_is_going[28]
  34. + v[NEXT_count_last % 12].what_is_going[29]
  35. + v[NEXT_count_last % 12].what_is_going[30];//перекидываем дела из 31 30 и 29 дня на 28 день + их колличество
  36.  
  37. v[NEXT_count % 12].sum_del[27] += v[NEXT_count_last % 12].sum_del[28]
  38. + v[NEXT_count_last % 12].sum_del[29]
  39. + v[NEXT_count_last % 12].sum_del[30];
  40. //и удаляем из текущего месяца ненужные дни. Т.К вначале присвоили 31 из перд месяца
  41. v[NEXT_count % 12].what_is_going.pop_back();//._Pop_back_n(3) сука не пашет в 17 студии, чё за нах
  42. v[NEXT_count % 12].what_is_going.pop_back();
  43. v[NEXT_count % 12].what_is_going.pop_back();
  44.  
  45. v[NEXT_count % 12].sum_del.pop_back();
  46. v[NEXT_count % 12].sum_del.pop_back();
  47. v[NEXT_count % 12].sum_del.pop_back();
  48.  
  49. v[NEXT_count % 12].days.pop_back();
  50. v[NEXT_count % 12].days.pop_back();
  51. v[NEXT_count % 12].days.pop_back();
  52. }
  53. if (NEXT_count % 12 == 2 || NEXT_count % 12 == 4 || NEXT_count % 12 == 6
  54. || NEXT_count % 12 == 7 || NEXT_count % 12 == 9 || NEXT_count % 12 == 11 || NEXT_count % 12 == 0)//сюда должны попадать, если след. месяц 31 день
  55. {
  56. v[NEXT_count % 12].days.resize(31);//если был 31, то всё ок, 30 и 28 ниже
  57. v[NEXT_count % 12].what_is_going.resize(31);
  58. v[NEXT_count % 12].sum_del.resize(31);
  59. if (v[NEXT_count_last % 12].days.size() == 28) {
  60. v[NEXT_count % 12].days[28] = 29;
  61. v[NEXT_count % 12].days[29] = 30;
  62. v[NEXT_count % 12].days[30] = 31;
  63. }
  64.  
  65.  
  66. if (v[NEXT_count_last % 12].days.size() == 30) {
  67. v[NEXT_count % 12].days[29] = 30;
  68. v[NEXT_count % 12].days[30] = 31;
  69. }
  70. }
  71.  
  72. if (NEXT_count % 12 == 3 || NEXT_count % 12 == 5 || NEXT_count % 12 == 8
  73. || NEXT_count % 12 == 10)//сюда должны попадать, если след. месяц 30 дней
  74. {
  75. if (v[NEXT_count_last % 12].days.size() == 31) {
  76. v[NEXT_count % 12].what_is_going[29] += v[NEXT_count_last % 12].what_is_going[30] + " ";
  77. //перекидываем дела из 31 на 30 + их количество
  78.  
  79. v[NEXT_count % 12].sum_del[29] += v[NEXT_count_last % 12].sum_del[30];
  80.  
  81. v[NEXT_count % 12].days.resize(30);
  82. v[NEXT_count % 12].what_is_going.resize(30);
  83. v[NEXT_count % 12].sum_del.resize(30);
  84.  
  85. }
  86. }
  87. }
  88. if (command[i] == "DUMP") {
  89. int temp; cin >> temp;
  90. cout << v[NEXT_count % 12].sum_del[temp - 1] << " ";
  91. cout << v[NEXT_count % 12].what_is_going[temp - 1] << endl;
  92.  
  93.  
  94. }
  95. if (command[i] == "ADD") {
  96. int temp; cin >> temp; string str; cin >> str;
  97. v[NEXT_count % 12].what_is_going[temp - 1] += str + " ";
  98. v[NEXT_count % 12].sum_del[temp - 1]++;
  99.  
  100. }
  101.  
  102. }
  103. return 0;
  104. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement