Calendar
#include
#include
#include
#include
typedef int bool;
char whatday (int);
bool isleapyear (int);
int numofdaysinmonth (int,bool);
void printheader (int);
void printmonth (int, int&);
void skip (int);
void skiptoday (int);
void disaster ();
void main ()
{
int year, firstdayincurrentmonth;
bool leap;
int currentmonth = 1;
int numdays;
cout << "What year do you want a calendar for? ";
cin >> year;
cout << "What day of the week does January 1 fall on?" << endl;
cout << "(Enter 0 for Sunday, 1 for Monday, etc.) ";
cin >> firstdayincurrentmonth;
leap = isleapyear(year);
skip(9);
cout << year << endl;
while (currentmonth <= 12)
{
numdays = numofdaysinmonth(currentmonth,leap);
printheader(currentmonth);
printmonth(numdays, firstdayincurrentmonth);
cout << endl << endl << endl;
currentmonth = currentmonth + 1;
}
cout << endl;
}
void disaster ()
{
cout << "Disaster! Exiting ..." << endl;
exit (-1);
}
void skip (int i)
{
while (i > 0)
{
cout << " ";
i = i - 1;
}
}
char whatday (int d)
{
if (d == 0) return('s');
else if (d == 1) return('m');
else if (d == 2) return('t');
else if (d == 3) return('w');
else if (d == 4) return('t');
else if (d == 5) return('f');
else if (d == 6) return('s');
else disaster();
}
bool isleapyear (int y)
{
return ((y % 4) == 0);
}
void printHeader (int m)
{
if (m == 1)
{
skip(7);
cout << "January" << endl;
}
else if (m == 2)
{
skip(7);
cout << "February" << endl;
}
else if (m == 3)
{
skip(7);
cout << "March" << endl;
}
else if (m == 4)
{ skip(7);
cout << "April" << endl;
}
else if (m == 5)
{
skip(7);
cout << "May" << endl;
}
else if (m == 6)
{
skip(7);
cout << "June" << endl;
}
else if (m == 7)
{
skip(7);
cout << "July" << endl;
}
else if (m == 8)
{
skip(7);
cout << "August" << endl;
}
else if (m == 9)
{
skip(7);
cout << "September" << endl;
}
else if (m == 10)
{
skip(7);
cout << "October" << endl;
}
else if (m == 11)
{
skip(7);
cout << "November" << endl;
}
else if (m == 12)
{
skip(7);
cout << "December" << endl;
}
else disaster();
cout << " S M T W T F S" << endl;
cout << "____________________" << endl;
}
int numofdaysinmonth (int m, bool leap)
{
if (m == 1) return(31);
else if (m == 2) if (leap) return(29);
else return(28);
else if (m == 3)
return(31);
else if (m == 4)
return(30);
else if (m == 5)
return(31);
else if (m == 6)
return(30);
else if (m == 7)
return(31);
else if (m == 8)
return(31);
else if (m == 9)
return(30);
else if (m == 10)
return(31);
else if (m == 11)
return(30);
else if (m == 12)
return(31);
else disaster();
}
void skiptoday (int d)
{
skip(3*d);
}
void printmonth (int numdays, int& weekday)
{
int day = 1;
skiptoday(weekday);
while (day <= numdays)
{
cout << setw(2) << day << " ";
if (weekday == 6)
{
cout << endl;
weekday = 0;
}
else weekday = weekday + 1;
day = day + 1;
}
}
No comments:
Post a Comment