본문 바로가기

언어/C++

6장 6번 - 정수 배열 합치기, 빼기

#include <iostream>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
class ArrayUtility2{
public:	
	static int*concat(int s1[], int s2[], int size){
		
		int *s3= new int [size];
		int j=0;
		for(int i=0; i<(size/2);i++){
			s3[j]=s1[i];
			j++;
		}
	//	cout<< j << endl;
		for(int i=0; i<(size/2);i++){
			s3[j]=s2[i];
			j++;
		}
	//	cout<< j << endl;
		return s3;
		
	}
	
	static int*remove(int s1[],int s2[],int size,int& retSize){
		for(int i=0; i<size;i ++){
			for(int j=0; j<size; j++){
				if(s1[i]==s2[j]){
						s1[i]=NULL;
				}
			}
		}
		
		for(int i=0; i<size;i ++){
			if(s1[i]!=NULL) retSize++;
		}
		
	
		int *s3=new int[retSize];
		int j=0;
		for(int i=0; i<size; i++){
			if(s1[i]!=NULL){
				s3[j]=s1[i];
				j++;
			}
		}
		
		if(retSize==0) return NULL;
		else return s3;
		
	}	
		
};



int main(int argc, char** argv) {
	
	int x[5];
	int y[5];
	int num=0;
	int size;
	
	
	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];
	}
	
	
	size=sizeof(x)/4 + sizeof(y)/4;
	cout << "합친 정수 배열을 출력한다.";
	int *s=ArrayUtility2::concat(x,y,size);
	for(int i=0; i<size; i++){
		cout<< s[i]<< ' ';
	}
	
	
	size=sizeof(x)/4;
	cout<< "배열 x[] 에서 y[]를 뺀 결과를 출력한다 .";
	s=ArrayUtility2::remove(x,y,size,num);
	cout << "개수는 " << num <<endl;
	for(int i=0; i<num; i++){
		cout<< s[i] << ' ';
	}
	
	
	return 0;
}