-
명품 C++ 3장 10번C++ 2018. 10. 28. 23:33
10. 다수의 클래스를 선언하고 활용하는 간단한 문제이다. 더하기(+), 빼기(-), 곱하기(*), 나누기(/)를 수행하는 4개의 클래스 Add, Sub, Mul, Div를 만들고자 한다. 이들은 모두 공통으로 다음 멤버를 가진다.
- int 타입 변수 a, b : 피연산자
- void setValue(int x, int y) 함수 : 매개 변수 x, y를 멤버 a, b에 복사
- int calcuate() 함수 : 연산을 실행하고 결과를 리턴
main() 함수는 Add, Sub, Mul, Div 클래스 타입의 객체 a, s, m, d를 생성하고, 아래와 같이 키보드로부터 두 개의 정수와 연산자를 입력받고, a, s, m, d 객체 중에서 연산을 처리할 객체의 setValue() 함수를 호출한 후, calculate()를 호출하여 결과를 화면에 출력한다. 프로그램은 무한 루프를 돈다.
소스코드
#include <iostream>using namespace std;class Add { // 더하기 클래스int a, b;public:void setValue(int x, int y);int calculate();};void Add::setValue(int x, int y) { //값 설정a = x; b = y;}int Add::calculate() { //더하기 연산return a + b;}class Sub { // 빼기 클래스int a, b;public:void setValue(int x, int y);int calculate();};void Sub::setValue(int x, int y) { //값 설정a = x; b = y;}int Sub::calculate() { // 빼기 연산return a - b;}class Mul { // 곱하기 클래스int a, b;public:void setValue(int x, int y);int calculate();};void Mul::setValue(int x, int y) { //값 설정a = x; b = y;}int Mul::calculate() { // 곱하기 연산return a * b;}class Div { // 나누기 클래스int a, b;public:void setValue(int x, int y);int calculate();};void Div::setValue(int x, int y) { //값 설정a = x; b = y;}int Div::calculate() { // 나누기 연산return a / b;}int main() {Add a;Sub s;Mul m;Div d;char op;int x, y;for (;;) { // 무한루프cout << "숫자 연산자 숫자 입력 해주세요 ";cin >> x >> op >> y;if (op == '+') { // 더하기a.setValue(x, y);cout << "연산결과 : " << a.calculate() <<endl;}else if (op == '-') { // 빼기s.setValue(x, y);cout << "연산결과 : " << s.calculate() << endl;}else if (op == '*') { // 곱하기m.setValue(x, y);cout << "연산결과 : " << m.calculate() << endl;}else if (op == '/') { // 나누기d.setValue(x, y);cout << "연산결과 : " << d.calculate() << endl;}elsecout << "입력 오류";}return 0;}실행결과
연산자마다 객체를 생성해 연산을 하였습니다.
'C++' 카테고리의 다른 글
명품 C++ 3장 12번 (0) 2018.10.28 명품 C++ 3장 11번 (0) 2018.10.28 명품 C++ 3장 9번 (0) 2018.10.28 명품 C++ 3장 8번 (0) 2018.10.28 명품 C++ 3장 7번 (0) 2018.10.28