Повернутися

struct DayMonthYear
{
    int day;   // день
    int month; // номер місяця
    int year;  // рік
};

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