Повернутися

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

bool IsDate(int A, int B, int C)
{
    // A - день, B - місяць, C - рік
    if (C < 1 || B < 1 || B > 12 || A < 1) return false;
    
    int daysInMonth[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    
    // Перевірка високосного року
    bool isLeapYear = (C % 4 == 0 && C % 100 != 0) || (C % 400 == 0);
    if (isLeapYear) daysInMonth[1] = 29;
    
    if (A > daysInMonth[B - 1]) return false;
    
    return true;
}