struct DayMonthYear
{
int day; // день
int month; // номер місяця
int year; // рік
};
DayMonthYear Yesterday(DayMonthYear D)
{
int daysInMonth[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
DayMonthYear yesterday = D;
yesterday.day--;
// Перевірка переходу на попередній місяць
if (yesterday.day < 1)
{
yesterday.month--;
// Перевірка переходу на попередній рік
if (yesterday.month < 1)
{
yesterday.month = 12;
yesterday.year--;
}
// Перевірка високосного року для попереднього місяця
bool isLeapYear = (yesterday.year % 4 == 0 && yesterday.year % 100 != 0) || (yesterday.year % 400 == 0);
if (isLeapYear) daysInMonth[1] = 29;
yesterday.day = daysInMonth[yesterday.month - 1];
}
return yesterday;
}
|