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로 오면서 예약어로 바뀐 것 같습니다.

 

+ Recent posts