Определение дня недели по дате от Томохико Сакамото (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); }