#include #include using namespace std; int daysOfMonth(int m, int y); bool isLeap(int year); bool validate(int m, int d, int y); int main() { int m, d, y; int daysUntil = 0; int daysOfCurrentMonth; cout << "Type in a month: "; cin >> m; cout << "Type in a day: "; cin >> d; cout << "Type in a year: "; cin >> y; if(!validate(m, d, y)) { cout << "Invalid date" << endl; return -1; } if((m == 12) && (d < 25)) { daysUntil = 25 - d; } else { daysOfCurrentMonth = daysOfMonth(m, y); daysUntil += daysOfCurrentMonth - d; if(m == 12) { m = 1; d = 1; y++; } else { m++; d = 1; } for(int i = m; i < 12; i++) { daysOfCurrentMonth = daysOfMonth(i, y); daysUntil += daysOfCurrentMonth; } daysUntil += 25; } cout << "Days until Christmas: " << daysUntil; cout << endl << endl; cout << "Enter to continue..."; cin.ignore(256, '\n'); cin.get(); return 0; } int daysOfMonth(int m, int y) { switch(m) { case 9: case 4: case 6: case 11: return 30; case 2: if(isLeap(y)) return 29; return 28; default: return 31; } } bool isLeap(int year) { if(year % 400 == 0) return true; if(year % 4 == 0) if(!(year % 100 == 0)) return true; return false; } bool validate(int m, int d, int y) { int daysInThisMonth = daysOfMonth(m, y); if (d > daysInThisMonth) { return false; } if(m > 12) return false; return true; }