Monday, April 18, 2011

Calendar example code 2 - in C/C++

Here's another calendar example code. It's composed of two functions. is_leapyear() is for checking "leapyear" and get_monthdays() is to get number of days for the specified year.
Calendar example code is shown below.


// 윤년이면 1을, 아니면 0을 리턴
// returns 1 if it's leapyear, returns 0 otherwise. 
//
int is_leapyear(int year)
{
// 400으로 나누어 떨어지면 윤년
// 100으로 나누어 떨어지지 않고 4로 나누어 떨어지면 윤년
// Check for leapyear. 
//
return !(year % 400) || ((year % 100) && !(year % 4));
}





// 지정한 월의 날짜수 반환 
// Returns the number of days for the specified year/month.
//
int get_monthdays(int year, int month)
{
// 각 달의 날짜수를 미리 저장해 둔다
// Number of days for Jan to Dec.
//
static int mdays[]
= {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

// 해당월의 날짜수를 가져온다
int md = mdays[month - 1];

// 윤년이고 2월이면 하루를 더한다
// Add 1 if it's leapear and Feb.
//
if(is_leapyear(year) && month == 2) md++;
return md;
}