ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 명품 C++ 9장 5번
    C++ 2018. 11. 6. 18:05

    5. 디지털 회로에서 기본적인 게이트로 OR 게이트, AND 게이트, XOR 게이트 등이 있다. 이들은 각각 두 입력 신호를 받아 OR 연산, AND 연산, XOR 연산을 수행한 결과를 출력한다. 이 게이트들은 각각 ORGate, XORGate, ANDGate 클래스로 작성하고자 한다. ORGate, XPRGate, ANDGate 클래스가 AbstractGate를 상속받도록 작성하라.


    AND 게이트

    OR 게이트


    XOR 게이트


    그림 출처 : http://chopisal.tistory.com/entry/%EB%85%BC%EB%A6%AC-%EA%B2%8C%EC%9D%B4%ED%8A%B8


    소스코드


    #include <iostream>
    #include <string>
    using namespace std;
    class AbstractGate { // 추상 클래스
    protected:
        bool x, y;
    public:
        void set(bool x, bool y) { this->x = x; this -> y = y; }
        virtual bool operation() = 0;
    };
    class ANDGate : public AbstractGate {
    public:
        bool operation();
    };
    bool ANDGate::operation() {
        if (x == true && y == true) return true;
        else return false;
    }
    class ORGate : public AbstractGate {
    public:
        bool operation();
    };
    bool ORGate::operation() {
        if (x == true || y == true) return true;
        else return false;
    }
    class XORGate : public AbstractGate {
    public:
        bool operation();
    };
    bool XORGate::operation() {
        if ((x == true && y == false) || (x == false && y == true)) return true;
        else return false;
    }
    int main() {
        ANDGate andGate;
        ORGate orGate;
        XORGate xorGate;
        andGate.set(true, false);
        orGate.set(true, false);
        xorGate.set(true, false);
        cout.setf(ios::boolalpha); // 불린 값을 "true", "false" 문자열로 출력할 것을 지시
        cout << andGate.operation() << endl; // AND 결과는 false
        cout << orGate.operation() << endl; // OR 결과는 true
        cout << xorGate.operation() << endl; // XOR 결과는 true
    }


    실행결과



    AND 는 둘다 true이면 true입니다.

    OR은 둘 중 하나라도 true이면 true입니다.

    XOR은 둘 장 하나만 true이여야 true입니다.


    순수 가상 함수를 통해 각 파생 클래스에서 필요한 operation을 구현하여 실행합니다.

    'C++' 카테고리의 다른 글

    명품 C++ 9장 7번 8번  (0) 2018.11.06
    명품 C++ 9장 6번  (2) 2018.11.06
    명품 C++ 9장 3번 4번  (0) 2018.11.06
    명품 C++ 9장 1번 2번  (0) 2018.11.06
    명품 C++ 8장 Open Challenge  (0) 2018.11.04

    댓글

© 2018 TISTORY. All rights reserved.