Задачи на дату/время в C++. Часть 7
Дан список периодов работы сотрудников:
// пары начала и конца смены: {час, минута}
std::vector<std::pair<std::pair<int,int>, std::pair<int,int>>> workPeriods = {
{{9, 0}, {18, 0}},
{{10, 0}, {16, 30}},
{{8, 45}, {17, 15}}
};
Рассчитайте общее отработанное время в часах и минутах.
Дан производственный календарь с праздниками:
using namespace std::chrono;
std::vector<year_month_day> holidays = {
2024y/1/1, 2024y/1/2, 2024y/1/7,
2024y/2/23, 2024y/3/8, 2024y/5/1
};
Рассчитайте количество рабочих дней между двумя датами с учетом праздников.
Дан график работы магазина по дням недели:
// ключ: день недели (1=пн … 7=вс), значение: {час_открытия, час_закрытия}
std::map<int, std::pair<int, int>> schedule = {
{1, {9, 21}},
{2, {9, 21}},
{3, {9, 21}},
{6, {10, 20}},
{7, {10, 18}}
};
Проверьте, открыт ли магазин в заданное время и день недели.
Дан список временных меток событий:
// пары: дата (год, месяц, день) и время (час, минута)
struct DateTime {
int year, month, day, hour, minute;
};
std::vector<DateTime> events = {
{2024, 3, 1, 10, 0},
{2024, 3, 1, 14, 30},
{2024, 3, 2, 9, 15},
{2024, 3, 2, 16, 45},
{2024, 3, 3, 11, 20}
};
Сгруппируйте события по дням и найдите средний интервал между событиями в каждом дне.
Дан список дедлайнов для задач:
struct DateTime {
int year, month, day, hour, minute;
};
std::vector<std::pair<std::string, DateTime>> deadlines = {
{"Task A", {2024, 3, 5, 17, 0}},
{"Task B", {2024, 3, 7, 12, 0}},
{"Task C", {2024, 3, 10, 23, 59}}
};
Рассчитайте для каждой задачи, сколько рабочих часов осталось до дедлайна (рабочий день: 9:00-18:00, пн-пт).
Дан список периодов бронирования:
struct DateTime {
int year, month, day, hour, minute;
};
std::vector<std::pair<DateTime, DateTime>> bookings = {
{{2024, 3, 1, 14, 0}, {2024, 3, 1, 16, 0}},
{{2024, 3, 1, 15, 30}, {2024, 3, 1, 17, 30}},
{{2024, 3, 2, 10, 0}, {2024, 3, 2, 12, 0}}
};
Проверьте, есть ли пересечения в периодах бронирования.
Дан список времени в разных часовых поясах:
// город, локальное время (час), смещение от UTC в часах
std::vector<std::tuple<std::string, int, int>> times = {
{"New York", 12, -5},
{"London", 17, 0},
{"Tokyo", 2, 9}
};
Приведите все время к UTC и выведите результат.
Дан список ежедневных измерений температуры:
using namespace std::chrono;
std::vector<std::pair<year_month_day, double>> temperatures = {
{2024y/3/1, 25.3},
{2024y/3/2, 26.1},
{2024y/3/3, 24.8},
{2024y/3/4, 23.5}
};
Рассчитайте скользящее среднее температуры за 3 дня.
Дан график смен сотрудников:
struct DateTime {
int year, month, day, hour, minute;
};
std::vector<std::tuple<std::string, DateTime, DateTime>> shifts = {
{"Ivanov", {2024, 3, 1, 8, 0}, {2024, 3, 1, 20, 0}},
{"Petrov", {2024, 3, 1, 20, 0}, {2024, 3, 2, 8, 0}},
{"Sidorov", {2024, 3, 2, 8, 0}, {2024, 3, 2, 20, 0}}
};
Проверьте, что смены покрывают все время без промежутков и наложений.
Дан список дней рождения сотрудников:
using namespace std::chrono;
std::vector<std::pair<std::string, year_month_day>> birthdays = {
{"Anna", 1990y/3/15},
{"Boris", 1985y/12/31},
{"Olga", 1992y/2/29}
};
Рассчитайте возраст каждого сотрудника на текущую дату. Учтите особый случай для рожденных 29 февраля.