1. 문제
5. 디지털 회로에서 기본적인 게이트로 OR 게이트, AND 게이트, XOR 게이트 등이 있다. 이들은 각각 두 입력 신호를 받아 OR 연산, AND 연산, XOR 연산을 수행한 결과를 출력한다. 이 게이트들을 각각 ORGate, XORGate, ANDGate 클래스로 작성하고자 한다. ORGate, XORGate, ANDGate 클래가 AbstractGate를 상속받도록 작성하라.
2. 결과
3. 코드
#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() {
if (x == true && y == true) return true;
else return false;
}
};
class ORGate : public AbstractGate {
public:
bool operation() {
if (x == true || y == true) return true;
else return false;
}
};
class XORGate : public AbstractGate {
public:
bool operation() {
if (x != y) return true;
else return false;
}
};
int main() {
ANDGate a;
ORGate o;
XORGate xo;
a.set(true, false);
o.set(true, false);
xo.set(true, false);
cout.setf(ios::boolalpha);
cout << a.operation() << endl;
cout << o.operation() << endl;
cout << xo.operation() << endl;
}
4. 설명
and, or, xor 은 각각 &&, ||, != 로 표현 합니다.
visual studio 2017에서 and, or, xor 변수명이 오류가 발생하여서 임의로 바꾸어 실행 하였습니다.
아마 2017로 오면서 예약어로 바뀐 것 같습니다.
'명품 C++ programming' 카테고리의 다른 글
명품 C++ programming 실습문제 9장 7번, 8번 (0) | 2019.05.03 |
---|---|
명품 C++ programming 실습문제 9장 6번 (0) | 2019.05.03 |
명품 C++ programming 실습문제 9장 3번, 4번 (0) | 2019.05.02 |
명품 C++ programming 실습문제 9장 1번, 2번 (0) | 2019.05.02 |
명품 C++ programming 8장 Open Challenge (0) | 2019.04.29 |