CPP C++ logo

Определение дня недели по дате от Томохико Сакамото (Tomohiko Sakamoto):

// 0 - воскресенье
// 1 <= m <= 12, y > 1752 (примерно)
int dayofweek(int y, int m, int d)
{
   static const int t[] = { 0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4 };
   y -= m < 3;
   return (y + y/4 - y/100 + y/400 + t[m-1] + d) % 7;
}

Правильный тест на високосный год (тест для Григорианского календаря):

bool isLeapYear(int year)
{
   return year % 4 == 0 && (year % 100 != 0 || year % 400 == 0);
}