U E D R , A S I H C RSS

만년달력/곽세환,조재화

만년달력

완성했당 *^^* 아직 코드 쉽게 이해할수 있도록 고치면 좋겠다고 창섭이형이 충고함 ㅠㅠ 담에 짤때는 깔금하게...

~cpp 
#include<iostream>
using namespace std;

bool isYunYear(int x);			// 윤년인지 여부를 판별
int monthDays(int x,int y);		// 월의 일수를 계산하는 함수

int main()
{

	int year, month;			// year,month는 입력받은 년,월 

	cin >> year >> month;		// year 은 알고 싶은 년도, month 는 알고 싶은 달.

	int yunYear4Year = year / 4;
	int yunYear100Year = year / 100;
	int yunYear400Year = year / 400;

	int yunYearTotal = yunYear4Year - yunYear100Year + yunYear400Year;
	
	int weekDay = (year + yunYearTotal) % 7;			// (year+z)%7은 년의 1월의 요일

	for(int i = 0 ; i < month-1 ; i++)
	{
		weekDay=( weekDay+monthDays(year,i+1)%7 ) %7;	// 입력한 월의 요일을 구한다.
	}
	
	cout<<"일"<<"\t"<<"월"<<"\t"<<"화"<<"\t"<<"수"<<"\t"<<"목"<<"\t"<<"금"<<"\t"<<"토"<<endl;
	for(i=0; i<weekDay; i++)
		cout << " \t";
	for(i=0 ; i<monthDays(year,month); i++)
	{
		cout << i+1 << "\t";//날짜를 순서대로 출력
		weekDay = weekDay+1;
		if(weekDay==7)//0~6 을 일~토 라고 했을때 토요일값을 입력하면 한칸 뛰운다.
		{	
			weekDay=0;
			cout << endl;
		}
	}
	cout<<endl;
	

	return 0;
}
bool isYunYear(int x)//윤년을 계산하는 함수
{
	if(x%4 ==0)
	{
		if(x%100 ==0)
		{
			if(x%400 ==0)
				return true;
			return false;
		}
		return true;
	}
	return false;
}
int monthDays(int x, int y)//월의 일수를 계산하는 함수
{
	if( y==1 || y==3 || y==5 || y==7 || y==8 || y== 10 || y==12)
		return 31;//1월 3월....은 31일 까지 있다.
	else if( y==2)//2월은 29일 또는 28일...
	{
		if(isYunYear(x)==true)
			return 29;
		return 28;
	}
	else//그외 월은 모두 30일
		return 30;
}

함수를 하나더 사용. 코드이해를 증가시키기위해서...
~cpp 
#include<iostream>
using namespace std;

bool isYunYear(int x);			// 윤년인지 여부를 판별
int monthDays(int x,int y);		// 월의 일수를 계산하는 함수
int getMonthWeekDay(int x, int y);

int main()
{

	int year, month;			// year,month는 입력받은 년,월 

	cin >> year >> month;		// year 은 알고 싶은 년도, month 는 알고 싶은 달.

	int yunYear4Year = year / 4;
	int yunYear100Year = year / 100;
	int yunYear400Year = year / 400;
	
	int yunYearTotal = yunYear4Year - yunYear100Year + yunYear400Year;
	
	int weekDay = (year + yunYearTotal) % 7;				// (year+z)%7은 년의 1월의 요일

	for(int i = 0 ; i < month-1 ; i++)
	{
		getMonthWeekDay(weekDay,monthDays(year,i+1)%7);		// 입력한 월의 요일을 구한다.
	}
	
	cout<<"일"<<"\t"<<"월"<<"\t"<<"화"<<"\t"<<"수"<<"\t"<<"목"<<"\t"<<"금"<<"\t"<<"토"<<endl;
	for(i=0; i<weekDay; i++)
		cout << " \t";
	for(i=0 ; i<monthDays(year,month); i++)
	{
		cout << i+1 << "\t";//날짜를 순서대로 출력
		weekDay = weekDay+1;
		if(weekDay==7)//0~6 을 일~토 라고 했을때 토요일값을 입력하면 한칸 뛰운다.
		{	
			weekDay=0;
			cout << endl;
		}
	}
	cout<<endl;
	

	return 0;
}
bool isYunYear(int x)//윤년을 계산하는 함수
{
	if(x%4 ==0)
	{
		if(x%100 ==0)
		{
			if(x%400 ==0)
				return true;
			return false;
		}
		return true;
	}
	return false;
}
int monthDays(int x, int y)//월의 일수를 계산하는 함수
{
	if( y==1 || y==3 || y==5 || y==7 || y==8 || y== 10 || y==12)
		return 31;//1월 3월....은 31일 까지 있다.
	else if( y==2)//2월은 29일 또는 28일...
	{
		if(isYunYear(x)==true)
			return 29;
		return 28;
	}
	else//그외 월은 모두 30일
		return 30;
}
int getMonthWeekDay(int x, int y)
{
	return x=(x+y) %7;
}
곽세환,조재화
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2009-05-27 07:09:19
Processing time 0.0078 sec