만년달력 ¶
완성했당 *^^* 아직 코드 쉽게 이해할수 있도록 고치면 좋겠다고 창섭이형이 충고함 ㅠㅠ 담에 짤때는 깔금하게...
~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; }곽세환,조재화