Не ищу ответа, но некоторая помощь была бы полезна.
когда вы делаете cin >> mon >>day
, сначала объявляете int переменные mon и день , но также проверьте возврат, поэтому if (!(cin >> mon day)) ...EOF occurred...
Если вы посмотрите на время управления функцией, у вас есть те, которые объявлены через <time.h>
, включая mktime и, как вы можете видеть, они работают с struct tm
, содержащим именно то, что вы хотите:
int tm_wday; /* Day of the week (0-6, Sunday = 0) */
int tm_yday; /* Day in the year (0-365, 1 Jan = 0) */
mktime также именно то, что вам нужно:
Функция mktime () преобразует разбитую структуру времени, выраженную в местном времени, в представление календарного времени.
Так что вам просто нужно установить поля:
int tm_sec; /* Seconds (0-60) */
int tm_min; /* Minutes (0-59) */
int tm_hour; /* Hours (0-23) */
int tm_mday; /* Day of the month (1-31) */
int tm_mon; /* Month (0-11) */
int tm_year; /* Year - 1900 */
tm_sec/tm_min/tm_hour
может быть 0, tm_mday
и tm_month
являются входамивы должны получить (просто уменьшите tm_month
после)
Единственная недостающая часть - это текущий год, но его легко установить, используйте time_t time(time_t *tloc);
, возвращая текущее время, а затем конвертируйте его в struct tm
используя struct tm *localtime(const time_t *timep);
, затем установите остальные поля, как описано выше, затем вызовите mktime
Теперь вы можете сделать свою программу