int tests (void) { assert(isLeapYear(2012) == 1); assert(isLeapYear(2042) == 0); assert(isLeapYear(2000) == 1); assert(isLeapYear(1900) == 0); assert(isLeapYear(1933) == 0); assert(yearToDoomsday(2005) == 4); assert(yearToDoomsday(2006) == 5); assert(yearToDoomsday(2015) == 2); assert(dayOfWeek(6, 1, 3, 7) == 6); assert(dayOfWeek(6, 1, 8, 16) == 0); assert(dayOfWeek(6, 1, 4, 1) == 3); assert(dayOfWeek(5, 0, 12, 25) == 4); assert(dayOfWeek(6, 1, 3, 31) == 2); assert(daysToNextThursday(1856, 9, 22) == 3); assert(daysToNextThursday(1899, 3, 21) == 2); assert(daysToNextThursday(1899, 9, 14) == 7); assert(daysToNextThursday(1899, 11, 12) == 4); assert(daysToNextThursday(2048, 2, 29) == 5); assert(daysToNextThursday(2048, 3, 1) == 4); assert(daysToNextThursday(2048, 3, 2) == 3); return 0; }
int daysToNextThursday(int year, int month, int day){ int e; e = yearToDoomsday(year); int f; f = isLeapYear(year); int A; A = dayOfWeek (e,f,month,day); if(A == 0){ return 7; } else if(A == 1){ return 6; } else if(A == 2){ return 5; } else if(A == 3){ return 4; } else if(A == 4){ return 3; } else if(A == 5){ return 2; } //else if(yearToDoomsDay == 3){ return 1; }
// Finding out how many days until next Thursday? // eg for 16 March 2011 (2011,3,16) the function will return 1 // eg for 17 March 2011 (2011,3,17) the funciton will return 7 int daysNextThursday(int year, int month, int day) { int doomsday = yearToDoomsday (year); int leapYear = isLeapYear (year); int weekDay = dayOfWeek (doomsday, leapYear, month, day); // When calling dayOfWeek, we need to do know: // What the DOOMSDAY of that year is (don't know / need calculation) // If the year is a LEAPYEAR or not (don't know / need calculation) // What the MONTH of the date is (already parsed / given by user asking the qn) // What the DAY of the date is (already parsed / given by user asking the qn) int daysToThursday = "SOME PRETTY SIMPLE CALCULATION;" return daysToThursday; }