-
명품 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 결과는 falsecout << orGate.operation() << endl; // OR 결과는 truecout << 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