본문 바로가기

C++ programming

명품 C++ programming 실습 문제 6장 5번

문제 :

동일한 크기로 배열을 변환하는 다음 2개의 static 멤버 함수를 가진 ArrayUtility 클래스를 만들어라.

1
2
3
4
static void intToDouble(int source[], double dest[], int size);
                                                     // int[]을 double[]로 변환
static void doubleToInt(double source[], int dest[], int size);
                                                     // double[]을 int[]로 변환

 

ArrayUtility를 활용하는 main()은 다음과 같다.

1
2
3
4
5
6
7
8
9
10
11
12
13
int main() {
    int x[] = {1,2,3,4,5};
    double y[5];
    double z[] = {9.9,8.8,7.7,6.6,5.6};
    
    ArrayUtility::intToDouble(x, y, 5); // x[] -> y[]
    for(int i=0; i<5; i++cout << y[i] << ' ';
    cout << endl;
    
    ArrayUtility::doubleToInt(z, x, 5); // z[] -> x[]
    for(int i=0; i<5; i++cout << x[i] << ' ';
    cout << endl;
}
 

 

실행 결과 :

 

목적 및 힌트 :

static 멤버 함수 만들기

 

코드 :

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
#include<iostream>
using namespace std;
 
class ArrayUtility{
public:
    static void intToDouble(int source[], double dest[], int size);
    static void doubleToInt(double source[], int dest[], int size);
};
 
void ArrayUtility::intToDouble(int source[], double dest[], int size){
    for(int i=0; i<size; i++) dest[i] = (double)source[i];
}
 
void ArrayUtility::doubleToInt(double source[], int dest[], int size){
    for(int i=0; i<size; i++) dest[i] = (int)source[i];
}
 
int main() {
    int x[] = {1,2,3,4,5};
    double y[5];
    double z[] = {9.9,8.8,7.7,6.6,5.6};
    
    ArrayUtility::intToDouble(x, y, 5); // x[] -> y[]
    for(int i=0; i<5; i++cout << y[i] << ' ';
    cout << endl;
    
    ArrayUtility::doubleToInt(z, x, 5); // z[] -> x[]
    for(int i=0; i<5; i++cout << x[i] << ' ';
    cout << endl;
}
 

 

설명 :

static 멤버 함수를 만들어서 사용하는 문제입니다.

static 멤버 함수는 클래스의 객체가 생성되지 않아도 범위 지정 연산자(Scope Operator) :: 를 사용해서 접근할 수 있습니다.