MyTetra Share
Делитесь знаниями!
Дела на месяц
Время создания: 25.07.2017 17:07
Раздел: Computer - Programming - C++ - Coursera White_Belt

/*

Вам нужно реализовать работу со списком дел,

а именно, обработку следующих операций:

ADD i s

Добавить дело с названием s в день i.

NEXT

Закончить текущий месяц и начать новый.

Если новый месяц имеет больше дней, чем текущий,

добавленные дни изначально не будут содержать дел.

Если же в новом месяце меньше дней,

дела со всех удаляемых дней необходимо будет

переместить на последний день нового месяца.


Количество команд этого типа может превышать 11.

DUMP i

Вывести все дела в день i.


Изначально текущим месяцем считается январь.

Количества дней в месяцах соответствуют

Григорианскому календарю с той лишь разницей,

что в феврале всегда 28 дней.


Для дописывания всех элементов вектора v2

в конец вектора v1 удобно использовать метод insert:

v1.insert(end(v1), begin(v2), end(v2));


Формат ввода

Сначала число операций Q, затем описания операций.

Названия дел s уникальны и состоят только из латинских букв,

цифр и символов подчёркивания. Номера дней i

являются целыми числами и нумеруются от 1 до размера текущего месяца.


Формат вывода

Для каждой операции типа DUMP в отдельной строке

выведите количество дел в соответствующий день,

а затем их названия, разделяя их пробелом.

Порядок вывода дел в рамках каждой операции значения не имеет.

*/


#include <iostream>

#include <string>

#include <vector>


using namespace std;


void InsertToFrom(vector<string>& to, const vector<string>& from)

{

to.insert(end(to), begin(from), end(from));

}


int main()

{

unsigned int q; //amount of commands

unsigned int month = 0; //January

vector<vector<string>> v(31);

string command;//, task;

cin >> q;

while(q)

{

cin >> command;

if(command == "NEXT")

{

++month;

if(month > 11) //more than December

month = 0;

if(month == 1) //Feb

{

for(int i=28; i<31; ++i)

{

//v[27].insert(end(v[27]), begin(v[i]), end(v[i]));

InsertToFrom(v[27], v[i]);

}

v.resize(28);

//28

}

else if(month == 7 || month == 0) //Aug && Jan

{/*nothing*/}

else

{

if(v.size() == 30 || v.size() == 28)

{

v.resize(31);

}

else

{

//v[29].insert(end(v[29]), begin(v[30]), end(v[30]));

InsertToFrom(v[29], v[30]);

v.resize(30);

}

}

}

else

{

unsigned int day;

cin >> day;

if(day <= v.size() && day > 0)

{

--day;

if(command == "DUMP")

{

cout << v[day].size() << " ";

for(auto i : v[day])

cout << i << " ";

cout << "\n";

}

else if(command == "ADD")

{

string task;

cin >> task;

v[day].push_back(task);

}

}

}

--q;

}


//system("pause");

return 0;

}

Так же в этом разделе:
 
MyTetra Share v.0.53
Яндекс индекс цитирования