기록은 기억을 이기고 시간보다 오래 남는다.

프로그래밍 언어/c++

[c/c++] 일, 월, 년을 원하는 만큼 더하는 프로그램

준_준 2023. 2. 23. 13:19

 

문제 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;
}
반응형