6.6> 동일한 크기의 배열을 변환하는 다음 2개의 static 멤버 함수를 가진 ArrayUtility2 클래스를 만들고 이 클래스를 이용하여 아래 결과와 같이 출력하도록 프로그램을 완성하라.
<코드>
#include <iostream>
using namespace std;
class ArrayUtility2{ public: static int* concat(int s1[], int s2[], int size); //s1과 s2를 연결한 새로운 배열을 동적 생성하고 포인터 리턴 static int* remove(int s1[], int s2[], int size, int& retSize); //s1에서 s2에 있는 숫자를 모두 삭제한 새로운 배열을 동적 생성하여 리턴, 리턴하는 //배열의 크기는 retSize에 전달. retSize가 0인 경우 NULL 리턴 }; int* ArrayUtility2::concat(int s1[], int s2[], int size){ int *p=new int[size*2]; //동일한 크기의 배열이므로 size *2의 배열을 동적 생성 for(int i=0;i<size;i++){ p[i]=s1[i]; //0~4의 인덱스는 s1로 초기화 p[i+size]=s2[i]; //5~9의 인덱스는 s2로 초기화 } return p; //동적배열을 가리키는 첫 주소 리턴 } int* ArrayUtility2::remove(int s1[], int s2[], int size, int& retSize){ int i; int j; int count=0; //빼기 배열 만들 때 사용할 카운터 for(i=0;i<size;i++){ for(j=0;j<size;j++){ if(s1[i]==s2[j]){ s1[i]=NULL; //s2의 원소를 s1에 일일이 비교하여 같으면 NULL로 교체 break; //어차피 1번겹치든 2번겹치든 빼는 것은 한번이기 때문에 break 가능 } } } for(i=0;i<size;i++){ if(s1[i]!=NULL) retSize++; //원소값이 NULL이 아니면 retSize 증가 } if(retSize==0) return NULL; //retSize가 0이면 NULL포인터 리턴 int *p=new int[retSize]; //retSize 크기의 인트형 배열 동적 할당 for(i=0;i<size;i++){ if(s1[i]!=NULL){ //s1[i]가 NULL이 아니면 p[count]=s1[i]; //p[count]에 대입 count++; } } return p; //동적배열을 가리키는 첫 주소 리턴 } int main(void){ int x[5]; int y[5]; int i; int *conc; //합친 배열 주소 받음 int *del; //뺀 배열 주소 받음 int size=sizeof(x)/sizeof(x[0]); //(4*5)/4=5 int retSize=0; //초기화 안하고 참조에 쓰면 오류생김 cout<<"정수를 5 개 입력하라. 배열 x에 삽입한다>>"; for(i=0;i<5;i++){cin>>x[i];} //배열 입력 cout<<"정수를 5 개 입력하라. 배열 y에 삽입한다>>"; for(i=0;i<5;i++){cin>>y[i];} conc=ArrayUtility2::concat(x,y,size); //합친 배열 for(i=0;i<size*2;i++){cout<<conc[i]<<" ";} //출력 cout<<endl; del=ArrayUtility2::remove(x,y,size,retSize); //뺀 배열 cout<<"배열 x[]에서 y[]를 뺀 결과를 출력한다. 개수는 "<<retSize <<endl; for(i=0;i<retSize;i++){cout<<del[i]<<" ";} //출력 cout<<endl; return 0; }
|
<결과창>
|
'컴퓨터 & 프로그래밍 & 전자공학 > C++' 카테고리의 다른 글
Trace 클래스 (0) | 2017.12.25 |
---|---|
Random 클래스 (0) | 2017.12.25 |
동일한 크기의 배열 (0) | 2017.12.25 |
생성자 오버로딩의 디폴트 매개변수로의 변환 (0) | 2017.12.25 |
생성자 중복 디폴트 매개 변수 (0) | 2017.12.25 |