C++

[C++] 명품 C++ 프로그래밍 실습문제 6장 6번

Hs’s Coding vlog 2023. 1. 10. 17:42

[C++]명품 C++ 프로그래밍 실습문제 6장 6번

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

명품 C++ 프로그래밍실습문제/연습문제 /C++

#include <iostream>
#include <string>
using namespace std;

class ArrayUtility2{
public:
    static int *concat(int *s1,int *s2, int size) //static 멤버 함수에서 non-static멤버 변수를 접근할수없다는 것을 명심!
    {
        int *p;
        int i;
        p = new int [10];
        
        for(i=0; i<5 ;i++){
            p[i] = s1[i];
            
        }
        i=0;
        for(int j=5; j<10 ;j++,i++){
            p[j] = s2[i];
            
        }
        
        return  p;
    }//문자열 두개 받고 합친 문자열 리턴
    
    static int* remove(int *s1,int *s2, int size, int &retSize)
    {
        int count = 0;
        int duplicate =0 ; //중복 안된상태
        int *tmp = new int [size];
        for(int i=0; i<size ; i++){
            for(int j=0; j<size ; j++){
                if(s1[i]==s2[j]){
                    duplicate =1;
                    break;
                }
                else if(duplicate == 0) { // flag를 세우면 간단하게 구현이 가능하다.
                    tmp[count++] = s1[i];
                    
                    break;
                }
            }
            
        }
        if(count==0) return NULL;
        
        retSize =count;
        cout << "\n배열 x[]에서 y[]를 뺀 결과를 출력한다. 개수는 " << retSize << endl;
        for(int i=0; i < count ; i++){
            cout << tmp[i] << " ";
        }
        return tmp;
    }//문자열 두개빼기
    
};

int main() {
    int x[5];
    int y[5];
    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];
    }
    
    int *p= ArrayUtility2::concat(x, y, 10); //배열의 시작주소를 넘겨줬음.
    
    cout << "합친 정수 배열을 출력한다." <<endl;
    for(int i=0; i<10 ;i++){
        cout << p[i] << " ";
    }
    
    int *q= ArrayUtility2::remove(x, y, 5, retsize);

    
    return 0;
}