문제 1
여러분은 아래와 같은 Date 클래스를 디자인 하려고 합니다. SetDate 는 말그대로 Date 함수 내부를 초기화 하는 것이고 AddDay, AddMonth, AddYear 는 일, 월, 년을 원하는 만큼 더하게 됩니다. 한 가지 주의할 점은 만일 2012 년 2 월 28 일에 3 일을 더하면 2012 년 2 월 31 일이 되는 것이 아니라 2012 년 3 월 2 일이 되겠지요?
코드
#include <iostream>
using namespace std;
class Date
{
private:
int year_;
int month_; // 1 부터 12 까지.
int day_; // 1 부터 31 까지.
public:
void SetDate(int year, int month, int date)
{
year_ = year;
month_ = month;
day_ = date;
}
void AddDay(int inc)
{
if (month_ == 1, 3, 5, 7, 8, 12) //31일인 경우
{
day_ += inc;
if (this->day_ > 31)
{
day_ -= 31;
AddMonth(1);
AddDay(0);
}
}
else if (month_ == 4, 6, 9, 10, 11) //30일인 경우
{
day_ += inc;
if (this->day_ > 30)
{
day_ -= 30;
AddMonth(1);
AddDay(0);
}
}
else if(this->month_ == 2)
{
day_ += inc;
if (this->day_ > 28)
{
day_ -= 28;
AddMonth(1);
AddDay(0);
}
}
}
void AddMonth(int inc)
{
this->month_ += inc;
if (this->month_ > 12)
{
this->month_ -= 12;
AddYear(1);
AddMonth(0);
}
}
void AddYear(int inc)
{
this->year_ += inc;
}
void ShowDate()
{
cout << "현재�": " << year_ << "년 "
<< month_ << "�" " << day_ << "일 입니다. " << endl;
}
};
int main()
{
Date check;
check.SetDate(2022, 12, 20);
check.AddDay(560);
check.AddDay(13);
check.AddYear(1);
check.ShowDate();
return 0;
}
반응형
'프로그래밍 언어 > c++' 카테고리의 다른 글
[C++] pow, sqrt 함수란?(루트함수, 제곱, 제곱근) (0) | 2023.04.28 |
---|---|
쓰레드 [thread/THREAD] (0) | 2023.02.27 |
[c/c+]참조자_레퍼런스(reference) (0) | 2023.02.01 |
[c/c++] 다양한 메뉴에 따라 출력되는 사각형/HDC hdc =GetWindowDC(GetForgroundWindow()); (0) | 2022.06.12 |
[C/C++] c++ espresso(에스프레소) chapter 08 상속 연습문제 (0) | 2022.06.11 |