문제 :
다수의 클래스를 선언하고 활용하는 간단한 문제이다. 더하기(+), 빼기(-), 곱하기(*), 나누기(/)를 수행하는 4개의 클래스를 Add, Sub, Mul, Div를 만들고자 한다.
이들은 모두 공통으로 다음 멤버를 가진다.
● int 타입 변수 a, b : 피연산자
● void setValue(int x, int y) 함수 : 매개 변수 x, y를 멤버 a, b에 복사
● int calculate() 함수 : 연산을 실행하고 결과 리턴
main() 함수는 Add, Sub, Mul, Div 클래스 타입의 객체 a, s, m, d를 생성하고, 아래와 같이 키보드로부터 두 개의 정수와 연산자를 입력받고, a, s, m, d 객체 중에서 연산을 처리할 객체의 setValue() 함수를 호출한 후, calculate()를 호출하여 결과를 화면에 출력한다.
프로그램은 무한 루프를 돈다.
실행 결과 :
목적 및 힌트 :
클래스와 객체 활용 연습
코드 :
(1) 클래스의 선언부와 구현부를 분리하고, 모든 코드를 Calculator.cpp 파일에 작성하라.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
#include <iostream>
using namespace std;
class Add{
private:
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{
private:
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{
private:
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{
private:
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;
int x, y;
char c;
while(true){
cout << "두 정수와 연산자를 입력하세요>>";
cin >> x >> y >> c;
if(c == '+') {
a.setValue(x,y);
cout << a.calculate() << endl;
}
else if(c == '-') {
s.setValue(x,y);
cout << s.calculate() << endl;
}
else if(c == '*') {
m.setValue(x,y);
cout << m.calculate() << endl;
}
else if(c == '/') {
d.setValue(x,y);
cout << d.calculate() << endl;
}
}
}
|
● 3-10.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
class Add{
private:
int a, b;
public:
void setValue(int x, int y);
int calculate();
};
class Div{
private:
int a, b;
public:
void setValue(int x, int y);
int calculate();
};
class Mul{
private:
int a, b;
public:
void setValue(int x, int y);
int calculate();
};
class Sub{
private:
int a, b;
public:
void setValue(int x, int y);
int calculate();
};
|
● 3-10.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
#include<iostream>
using namespace std;
#include "3-10.h"
void Add::setValue(int x, int y){
a = x;
b = y;
}
int Add::calculate(){
return a + b;
}
void Sub::setValue(int x, int y){
a = x;
b = y;
}
int Sub::calculate(){
return a - b;
}
void Mul::setValue(int x, int y){
a = x;
b = y;
}
int Mul::calculate(){
return a * b;
}
void Div::setValue(int x, int y){
a = x;
b = y;
}
int Div::calculate(){
return a / b;
}
|
● main.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
#include<iostream>
using namespace std;
#include "3-10.h"
int main() {
Add a;
Sub s;
Mul m;
Div d;
int x, y;
char c;
while(true){
cout << "두 정수와 연산자를 입력하세요>>";
cin >> x >> y >> c;
if(c == '+') {
a.setValue(x,y);
cout << a.calculate() << endl;
}
else if(c == '-') {
s.setValue(x,y);
cout << s.calculate() << endl;
}
else if(c == '*') {
m.setValue(x,y);
cout << m.calculate() << endl;
}
else if(c == '/') {
d.setValue(x,y);
cout << d.calculate() << endl;
}
}
}
|
설명 :
하나의 프로그램을 헤더 파일과 cpp 파일로 나누어 작성하는 문제입니다.
각각의 파일들을 한 프로젝트에 넣어놓고 구현부 cpp 파일과 main cpp 파일에서 헤더파일을 include 해주시면 됩니다.
앞으로 프로그램을 작성할 때 지금처럼 헤더파일과 구현부 cpp파일, main cpp파일로 나누어 작성하는걸 추천합니다.
'C++ programming' 카테고리의 다른 글
명품 C++ programming 실습 문제 3장 12번 (2) | 2020.03.03 |
---|---|
명품 C++ programming 실습 문제 3장 11번 (1) | 2020.03.03 |
명품 C++ programming 실습 문제 3장 9번 (1) | 2020.03.03 |
명품 C++ programming 실습 문제 3장 8번 (1) | 2020.03.03 |
명품 C++ programming 실습 문제 3장 7번 (2) | 2020.03.03 |