-
명품 C++ 6장 6번C++ 2018. 11. 2. 17:51
6. 동일한 크기의 배열을 변환하는 다음 2개의 static 멤버 함수를 가진 ArrayUtility2 클래스를 만들고, 이 클래스를 이용하여 아래 결과와 같이 출력되록 프로그램을 완성하라.
소스코드
#include <iostream>using namespace std;class ArrayUtility2 {public:// s1과 s2를 연결한 새로운 배열을 동적 생성하고 포인터 리턴static int* concat(int s1[], int s2[], int size);// s1에서 s2에 있는 숫자를 모두 삭제한 새로운 배열을 동적 생성하여 리턴. 리턴하는 배열의 크기는// retSize에 전달. retSize가 0인 경우 NULL 리턴static int* remove(int s1[], int s2[], int size, int & resSize);};int* ArrayUtility2::concat(int s1[], int s2[], int size) {int *a=new int[size*2];for (int i = 0; i < size; ++i)a[i] = s1[i];for (int i = 0; i < size; ++i)a[i+size] = s2[i];return a;}int* ArrayUtility2::remove(int s1[], int s2[], int size, int & resSize) {int *b = new int[size];resSize = size;bool sw;for (int i = 0; i < size; ++i) {sw = false;for (int j = 0; j < size; ++j) {if (s1[i] == s2[j]) {sw = true;--resSize;break;}}if (!sw) b[i] = s1[i];}return b;}int main(){int x[5], y[5], *z;int retSize;cout << "정수를 5 개 입력하라 . 배열 x에 삽입한다>>";for (int i = 0; i < 5; ++i)cin >> x[i];cout << "정수를 5 개 입력하라 . 배열 y에 삽입한다>>";for (int i = 0; i < 5; ++i)cin >> y[i];z=ArrayUtility2::concat(x, y, 5);cout << "합친 정수 배열을 출력한다." << endl;for (int i = 0; i < 10; ++i)cout << z[i] << ' ';cout << endl;z = ArrayUtility2::remove(x, y, 5, retSize);cout << "배열 x[]에서 y[]를 뺀 결과를 출력한다. 개수는 2" << endl;for (int i = 0; i < retSize; ++i)cout << z[i] << ' ';cout << endl;}실행결과
concat 로 합친 배열을 z에 리턴합니다.
remove로 값을 제건한 배열을 z에 리턴합니다.
전역함수의 캡슐화를 위해 static 을 사용하여 클래스의 멤버 함수로 만듭니다.
'C++' 카테고리의 다른 글
명품 C++ 6장 8번 (2) 2018.11.02 명품 C++ 6장 7번 (0) 2018.11.02 명품 C++ 6장 5번 (0) 2018.11.02 명품 C++ 6장 4번 (0) 2018.11.02 명품 C++ 6장 3번 (0) 2018.11.02