C++ Programming Ch.10 Exercise 6 Solution
Problem: ๋ค์ ํจ์๋ ๋งค๊ฐ ๋ณ์๋ก ์ฃผ์ด์ง int ๋ฐฐ์ด src์์ ๋ฐฐ์ด minus์ ๋ค์ด์๋ ๊ฐ์ ์ ์๋ฅผ ๋ชจ๋ ์ญ์ ํ ์๋ก์ด int ๋ฐฐ์ด์ ๋์ ์ผ๋ก ํ ๋น๋ฐ์ ๋ฆฌํดํ๋ค. retSize๋ remove() ํจ์์ Execution Result๋ฅผ ๋ฆฌํดํ๋ ๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ ์ ๋ฌ๋ฐ๋๋ค. 1 int * remove(int src[], int sizeSrc, int minus[], int sizeMinus, int& resSize); ํ ํ๋ฆฟ์ ์ด์ฉํ์ฌ remove๋ฅผ ์ผ๋ฐํํ๋ผ. Execution Result: Objective & Hints: ํจ์์ ์ผ๋ฐํ์ ๋ํ ์ดํด, ํ ํ๋ฆฟ ํจ์ ๋ง๋ค๊ธฐ Code: 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 31 32 33 34 35 36 37 38 39 40 41 #include using namespace std; template T* remove(T src[], int sizeSrc, T minus[], int sizeMinus, int & retsize){ int j; T* tmpArray = new T[sizeSrc]; for(int i=0; i<sizeSrc; i++){ for(j=0; j<sizeMinus; j++){ if(src[i] == minus[j]){ // src์ ์์์ minus์ ์์๊ฐ ๊ฐ์ผ๋ฉด j์ ๊ฐ์ ํ๋ ๋ด๋ฆฐ ํ break --j; break; } } if(j==sizeMinus){ // j==sizeMinus ๋ผ๋๊ฑด src์ minus์ ๊ฐ์ ์์๊ฐ ์์ด ์ค๊ฐ์ break ๋์ง ์์ ๊ฒฝ์ฐ tmpArray[retsize] = src[i]; // src[i]๋ฅผ ๋์ ํ ๋น ํ์ฌ ์์ฑํ tmpArray์ ์ฝ์ retsize++; // return ํ size์ ๊ฐ์ ํ๋ ์ฌ๋ ค์ค } } return tmpArray; } int main() { int a[] = { 1,2,3,4,5,6,7,8,9,10 }; int b[] = { 5,6,7,8,9 }; int size=0; int *p = remove(a, 10, b,5, size); for (int i = 0; i < size; ++i) cout << p[i] << ' '; cout << endl; delete[] p; size = 0; char c[] = { 'a','b','i','m','c','d','e',}; char d[] = { 'k','i','m','n','u' }; char *q = remove(c, 7, d, 5,size); for (int i = 0; i < size; ++i) cout << q[i] << ' '; cout << endl; delete[] q; } Explanation: ...