rendered paste body#include <iostream>
#include <string>
#include <iomanip>
#include <fstream>
using namespace std;
void printmonth(const int month, int year, bool leap, ostream & mf);
int main()
{
ofstream MyFile;
MyFile.open("cal.dat");
int year;
do
{
cout << "Enter a 4-digit year starting at 1582: ";
cin >> year;
}
while((year <= 1582)||(year >= 9999));
bool isleapyear;
if (((year)%4) && ((year)%100)|| ((year)%400))
isleapyear=true;
MyFile << setw(16) << year << endl;
for (int y=1;y <= 12;y++)
{printmonth(y, year, isleapyear, MyFile);
}
return 0;
}
void printmonth(const int month, int year, bool leap, ostream & mf)
{
int a, y, m, d;
const int day=1;
string monthname[13] = {" ", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
int daysinmon[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
int width=14 + (monthname[month].length()/2);
a=(14-month)/12;
y=year-a;
m= month+12*a-2;
d=(day+y+y/4-y/100 + y/400 + (31*m/12))%7;
if (leap)
daysinmon[2] = 29;
mf << setw(width) << monthname[month] << endl;
mf << " Sun Mon Tue Wed Thu Fri Sat " << endl;
for (int day=0;day <= d; day++)
mf << setw(4+day*4);
for (int day=1;day <= daysinmon[month];day++)
{mf << day << setw(4);
if ((d + day)%7 == 0)
mf << endl;
}
mf << endl;
}