• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

[04:58] 연습문제 9-> 0, 0->9 로 돌아가게 하는 법

20.01.05 06:44 작성 조회수 136

2

안녕하세요.

연습문제 풀어봤습니다.

9에서 ++ 하면 0이 되게 하는 부분은

m_digit == 9 일 때는 그냥 m_digit에 0을 대입 했습니다.

<코드>

Digit& Digit::operator ++ ()
{
    if (m_digit == 9)
    {
        m_digit = 0;
    }
    else
    {
        ++m_digit;
    }
    
    return *this;
}

Digit& Digit::operator -- ()
{
    if (m_digit == 0)
    {
        m_digit = 9;
    }
    else
    {
        --m_digit;
    }
    
    return *this;
}

Digit Digit::operator ++ (int)
{
    Digit temp(m_digit);
    // m_digit++;
    ++(*this);

    return temp;
}
Digit Digit::operator -- (int)
{
    Digit temp(m_digit);
    // m_digit++;
    --(*this);

    return temp;
}

<출력>

PS C:\coding\tbcpp_review\Chapter9> .\a.exe    

prefix --0

9

9

prefix ++9

0

0

postfix 0--

0

9

postfix 9++

9

0

<전체코드>

#include <iostream>
using namespace std;

class Digit
{
private:
    int m_digit;

public:
    Digit(int digit = 0) : m_digit(digit) {}

    // prefix
    Digit& operator ++ ();
    Digit& operator -- ();

    // postfix
    Digit operator ++ (int);
    Digit operator -- (int);


    friend ostream& operator << (ostream& outconst Digit &digit)
    {
        out << digit.m_digit;
        return out;
    }
};

Digit& Digit::operator ++ ()
{
    if (m_digit == 9)
    {
        m_digit = 0;
    }
    else
    {
        ++m_digit;
    }
    
    return *this;
}

Digit& Digit::operator -- ()
{
    if (m_digit == 0)
    {
        m_digit = 9;
    }
    else
    {
        --m_digit;
    }
    
    return *this;
}

Digit Digit::operator ++ (int)
{
    Digit temp(m_digit);
    // m_digit++;
    ++(*this);

    return temp;
}
Digit Digit::operator -- (int)
{
    Digit temp(m_digit);
    // m_digit++;
    --(*this);

    return temp;
}

int main()
{
    Digit digit1(0);
    Digit digit2(9);
    Digit digit3(0);
    Digit digit4(9);

    cout << "prefix --0" << endl;
    cout << "--digit1(0) : " << --digit1 << endl;
    cout << "digit1(0) : " << digit1 << endl;

    cout << "prefix ++9" << endl;
    cout << ++digit2 << endl;
    cout << digit2 << endl;

    cout << "postfix 0--" << endl;
    cout << digit3-- << endl;
    cout << digit3 << endl;

    cout << "postfix 9++" << endl;
    cout << digit4++ << endl;
    cout << digit4 << endl;



    return 0;
}

감사합니다.

답변 1

답변을 작성해보세요.

2

나머지 연산자 쓰시는 방법도 있습니다. 자료구조에서 circular queue에서 많이 쓰지요.