일을 월단위로 바꿔주는 프로그램
조회수 632회
#include <iostream>
using namespace std;
void mthchange(int day) {
int mday = 0, mth = 0;
int arr[12] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30};
while (mday <= day) {
mday += arr[mth];
mth++;
}
cout << mth << "월 " << day - mday << "일" << endl;
}
int main (void) {
int i;
cin >> i;
mthchange(i);
return 0;
}
이리 했는데.. 12 입력하면 2월 -19일이라 뜨네요..
2 답변
-
#include <iostream> using namespace std; void mthchange(int day) { int mday = day, mth = 0; int arr[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; for (mth = 0; mday > arr[mth]; mth = (mth + 1) % 12) //해당 월의 일수보다 작거나 같아지면 종료 { mday -= arr[mth]; } cout << mth + 1 << "월 " << mday << "일" << endl; } int main(void) { int i; cin >> i; mthchange(i); return 0; }
366 이상 입력해도 원하는 값을 얻을 수 있을것입니다.
윤년처리는 제외시켰습니다.
-
코드를 최소한으로 수정하는 방향으로 살려보자면 while문 조건만 바꿔 보는걸로 해 보시죠.
while (mday + arr[mth] < day)
이게 될거 같은데 실행 안 해봐서 정확하게 모르겠습니다.
댓글 입력