All pastes #2109184 Raw Edit

Untitled

public text v1 · immutable
#2109184 ·published 2012-02-03 05:21 UTC
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;
}