Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <string>
- using namespace std;
- struct Plan {
- vector<int> days;//числа месяца истинные( индекс -1)
- vector<string> what_is_going;// занятия будем писать в строку+=
- vector<int> sum_del;// сум занятий на день. Все 3 вектора в структуре должны быть 1 размера, стыкуемся по индексу;
- };
- int main() {
- int op;//количество команд из консоли
- int NEXT_count = 0;
- // буду считать, сколько раз скипнется месяц. И переносить из предыдущего в след, сгребая всё в посл. день нового, если их меньше.
- cin >> op;
- vector<Plan> v(12);//12 векторов структуры План(0-11). Инициализируем "Январский" вектор
- v[0].sum_del.resize(31); for (int i = 0; i < v[0].sum_del.size(); i++) { v[0].sum_del[i] = 0; }//во всех днях января сумма дел пока 0
- v[0].days.resize(31); for (int i = 0; i < v[0].days.size(); i++) { v[0].days[i] = i + 1; }//запишем даты 1-31 в вектор интов
- v[0].what_is_going.resize(31, "");//нихрена нет на повестке дня во всех числах(пока)
- vector<string> command(op);//считывать команду и дальше по ветвлению из иф
- //ебаное ветвление:) Черт ногу сломит
- for (int i = 0; i < op; i++) {
- cin >> command[i];
- if (command[i] == "NEXT")
- {
- int NEXT_count_last = NEXT_count;
- NEXT_count += 1;
- v[NEXT_count % 12] = v[NEXT_count_last % 12]
- ;//если февраль(28 дней);
- if (NEXT_count % 12 == 1)
- {//если февраль(28 дней)
- v[NEXT_count % 12].what_is_going[27] += v[NEXT_count_last % 12].what_is_going[28]
- + v[NEXT_count_last % 12].what_is_going[29]
- + v[NEXT_count_last % 12].what_is_going[30];//перекидываем дела из 31 30 и 29 дня на 28 день + их колличество
- v[NEXT_count % 12].sum_del[27] += v[NEXT_count_last % 12].sum_del[28]
- + v[NEXT_count_last % 12].sum_del[29]
- + v[NEXT_count_last % 12].sum_del[30];
- //и удаляем из текущего месяца ненужные дни. Т.К вначале присвоили 31 из перд месяца
- v[NEXT_count % 12].what_is_going.pop_back();//._Pop_back_n(3) сука не пашет в 17 студии, чё за нах
- v[NEXT_count % 12].what_is_going.pop_back();
- v[NEXT_count % 12].what_is_going.pop_back();
- v[NEXT_count % 12].sum_del.pop_back();
- v[NEXT_count % 12].sum_del.pop_back();
- v[NEXT_count % 12].sum_del.pop_back();
- v[NEXT_count % 12].days.pop_back();
- v[NEXT_count % 12].days.pop_back();
- v[NEXT_count % 12].days.pop_back();
- }
- if (NEXT_count % 12 == 2 || NEXT_count % 12 == 4 || NEXT_count % 12 == 6
- || NEXT_count % 12 == 7 || NEXT_count % 12 == 9 || NEXT_count % 12 == 11 || NEXT_count % 12 == 0)//сюда должны попадать, если след. месяц 31 день
- {
- v[NEXT_count % 12].days.resize(31);//если был 31, то всё ок, 30 и 28 ниже
- v[NEXT_count % 12].what_is_going.resize(31);
- v[NEXT_count % 12].sum_del.resize(31);
- if (v[NEXT_count_last % 12].days.size() == 28) {
- v[NEXT_count % 12].days[28] = 29;
- v[NEXT_count % 12].days[29] = 30;
- v[NEXT_count % 12].days[30] = 31;
- }
- if (v[NEXT_count_last % 12].days.size() == 30) {
- v[NEXT_count % 12].days[29] = 30;
- v[NEXT_count % 12].days[30] = 31;
- }
- }
- if (NEXT_count % 12 == 3 || NEXT_count % 12 == 5 || NEXT_count % 12 == 8
- || NEXT_count % 12 == 10)//сюда должны попадать, если след. месяц 30 дней
- {
- if (v[NEXT_count_last % 12].days.size() == 31) {
- v[NEXT_count % 12].what_is_going[29] += v[NEXT_count_last % 12].what_is_going[30] + " ";
- //перекидываем дела из 31 на 30 + их количество
- v[NEXT_count % 12].sum_del[29] += v[NEXT_count_last % 12].sum_del[30];
- v[NEXT_count % 12].days.resize(30);
- v[NEXT_count % 12].what_is_going.resize(30);
- v[NEXT_count % 12].sum_del.resize(30);
- }
- }
- }
- if (command[i] == "DUMP") {
- int temp; cin >> temp;
- cout << v[NEXT_count % 12].sum_del[temp - 1] << " ";
- cout << v[NEXT_count % 12].what_is_going[temp - 1] << endl;
- }
- if (command[i] == "ADD") {
- int temp; cin >> temp; string str; cin >> str;
- v[NEXT_count % 12].what_is_going[temp - 1] += str + " ";
- v[NEXT_count % 12].sum_del[temp - 1]++;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement