U E D R , A S I H C RSS

만년달력/이진훈,문원명

만년달력입니다.

~cpp 
#include <iostream>
using namespace std;

void main()
{	
	bool fyun = 0; //윤달인지 아닌지 판별하는 변수. 0이면 윤달이 아니다. 1이면 윤달이다.
	int countday = 0; //날짜 세는 변수.
	int findday = 1; //매년 추가되는 날짜.
	int endmonth, endline; //달의 끝, 주의 끝.
	int year,month;
		cout << "알고 싶은 년, 월, 입력해보시지!!";
	cin >> year;
	cin >> month;
	if (year == 1)
		findday = 1;
	else
	{
	for (int i = 2;i<=year;i++)//각 년마다 밀리는 날짜 카운트
	{
		fyun = 0;
		if((i-1)%4 == 0)
			fyun = 1;
		if((i-1)%100 ==0)
			fyun = 0;
		if((i-1)%400 == 0)
			fyun = 1;
			if (fyun == 1)
				findday += 2;
			else if (fyun == 0)
				findday += 1;
	}
	}
	
	for (int k = 1;k<month;k++)//각 년에서의 월까지의 중첩되는 날짜 카운트
	{
		if (k == 1 || k == 3 || k == 5 || k == 7 || k == 8 || k == 10 || k == 12)
			countday += 31;
		else if (k == 2)
		{
			fyun = 0;
		if(year%4 == 0)
			fyun = 1;
		if(year%100 ==0)
			fyun = 0;
		if(year%400 == 0)
			fyun = 1;
		countday += (28+fyun);
		}
		else 
			countday += 30;
	}
	findday = (findday%7+countday)%7;//각 월 첫째날의 요일.
	cout << year << "년\t\t\t" << month << "월" << endl;
	cout << "Sun\t Mon\t Tue\t Wed\t Thr\t Fri\t Sat" << endl;
	if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12)
		endmonth = 31;
	else if (month == 2)
		{
			fyun = 0;
		if(year%4 == 0)
			fyun = 1;
		if(year%100 ==0)
			fyun = 0;
		if(year%400 == 0)
			fyun = 1;
		endmonth = (28+fyun);
		}
	else 
		endmonth = 30;
	endline = findday;
	for(int q = 0;q<findday;q++)
		cout << "\t ";
	cout << "1\t ";
	for(int n = 2 ; n <= endmonth; n++)//출력부. endline은 주의 끝.
	{
		endline++;
		if (endline == 7)
		{
			endline = 0;
			cout << endl;
		}
		cout << n << "\t ";
	}
	cout << endl;
}

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2009-05-27 07:09:19
Processing time 0.0112 sec