๐Ÿ’ป Dev & CSC++ Programming

C++ Programming Ch.10 Exercise 7 Solution

Problem: ๋‹ค์Œ ํ”„๋กœ๊ทธ๋žจ์€ ์ปดํŒŒ์ผ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ์†Œ์Šค์˜ ์–ด๋””์—์„œ ์™œ ์ปดํŒŒ์ผ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”๊ฐ€? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #include using namespace std; class Circle { int radius; public: Circle(int radius = 1) { this->radius = radius; } int getRadius() { return radius; } }; template T bigger(T a, T b) { // ๋‘ ๊ฐœ์˜ ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ๋น„๊ตํ•˜์—ฌ ํฐ ๊ฐ’์„ ๋ฆฌํ„ด if (a > b) return a; else return b; } int main() { int a = 20, b = 50, c; c = bigger(a, b); cout << "20๊ณผ 50์ค‘ ํฐ ๊ฐ’์€ " << c << endl; Circle waffle(10), pizza(20), y; y = bigger(waffle, pizza); cout << "waffle๊ณผ pizza ์ค‘ ํฐ ๊ฒƒ์˜ ๋ฐ˜์ง€๋ฆ„์€ " << y.getRadius() << endl; } Execution Result: ...

March 9, 2020 ยท 2 min ยท Sobamemil
๐Ÿ’ป Dev & CSC++ Programming

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: ...

March 9, 2020 ยท 2 min ยท Sobamemil
๐Ÿ’ป Dev & CSC++ Programming

C++ Programming Ch.10 Exercise 5 Solution

Problem: ๋‹ค์Œ ํ•จ์ˆ˜๋Š” ๋งค๊ฐœ ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง„ ๋‘ ๊ฐœ์˜ int ๋ฐฐ์—ด์„ ์—ฐ๊ฒฐํ•œ ์ƒˆ๋กœ์šด int ๋ฐฐ์—ด์„ ๋™์  ํ• ๋‹น๋ฐ›์•„ ๋ฆฌํ„ดํ•œ๋‹ค. 1 int * concat(int a[], int sizea, int b[], int sizeb); concat๊ฐ€ int ๋ฐฐ์—ด๋ฟ ์•„๋‹ˆ๋ผ ๋‹ค๋ฅธ ํƒ€์ž…์˜ ๋ฐฐ์—ด๋„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ์ผ๋ฐ˜ํ™”ํ•˜๋ผ. 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 #include using namespace std; template T* concat(T a[], int sizea, T b[], int sizeb){ T *rArray = new T[sizea + sizeb]; // return ํ•  ๋ฐฐ์—ด์„ ๋™์ ์ƒ์„ฑ for(int i=0; i<sizea+sizeb; i++){ if(i<sizea) rArray[i] = a[i]; else rArray[i] = b[i-sizea]; } return rArray; } int main() { int x[] = { 1, 10, 100, 5, 4 }; int y[] = { 7, 6, 10, 9 }; int *a = concat(x, 5, y, 4); int aSize = sizeof(x)/sizeof(x[0]) + sizeof(y)/sizeof(y[0]); // a์— ๋“ค์–ด์žˆ๋Š” ์›์†Œ์˜ ๊ฐœ์ˆ˜ for (int i = 0; i<aSize; i++) cout << a[i] << ' '; }

March 9, 2020 ยท 1 min ยท Sobamemil
๐Ÿ’ป Dev & CSC++ Programming

C++ Programming Ch.10 Exercise 4 Solution

Problem: ๋ฐฐ์—ด์—์„œ ์›์†Œ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” search() ํ•จ์ˆ˜๋ฅผ ํ…œํ”Œ๋ฆฟ์œผ๋กœ ์ž‘์„ฑํ•˜๋ผ. search()์˜ ์ฒซ ๋ฒˆ์งธ ๋งค๊ฐœ ๋ณ€์ˆ˜๋Š” ๊ฒ€์ƒ‰ํ•˜๊ณ ์ž ํ•˜๋Š” ์›์†Œ ๊ฐ’์ด๊ณ , ๋‘ ๋ฒˆ์งธ ๋งค๊ฐœ ๋ณ€์ˆ˜๋Š” ๋ฐฐ์—ด์ด๋ฉฐ, ์„ธ ๋ฒˆ์งธ ๋งค๊ฐœ ๋ณ€์ˆ˜๋Š” ๋ฐฐ์—ด์˜ ๊ฐœ์ˆ˜์ด๋‹ค. search() ํ•จ์ˆ˜๊ฐ€ ๊ฒ€์ƒ‰์— ์„ฑ๊ณตํ•˜๋ฉด true๋ฅผ, ์•„๋‹ˆ๋ฉด false๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค. search()์˜ ํ˜ธ์ถœ ์‚ฌ๋ก€๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. 1 2 3 int x[] = {1, 10, 100, 5, 4}; if(search(100, x, 5)) cout << "100์ด ๋ฐฐ์—ด x์— ํฌํ•จ๋˜์–ด ์žˆ๋‹ค"; // ์ด cout ์‹คํ–‰ else cout << "100์ด ๋ฐฐ์—ด x์— ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค"; Execution Result: ...

March 9, 2020 ยท 1 min ยท Sobamemil
๐Ÿ’ป Dev & CSC++ Programming

C++ Programming Ch.10 Exercise 3 Solution

Problem: ๋ฐฐ์—ด์˜ ์›์†Œ๋ฅผ ๋ฐ˜๋Œ€ ์ˆœ์„œ๋กœ ๋’ค์ง‘๋Š” reverseArray() ํ•จ์ˆ˜๋ฅผ ํ…œํ”Œ๋ฆฟ์œผ๋กœ ์ž‘์„ฑํ•˜๋ผ. reverseArray()์˜ ์ฒซ ๋ฒˆ์งธ ๋งค๊ฐœ ๋ณ€์ˆ˜๋Š” ๋ฐฐ์—ด์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ์ด๋ฉฐ ๋‘ ๋ฒˆ์งธ ๋งค๊ฐœ ๋ณ€์ˆ˜๋Š” ๋ฐฐ์—ด์˜ ๊ฐœ์ˆ˜์ด๋‹ค. reverseArray()์˜ ํ˜ธ์ถœ ์‚ฌ๋ก€๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. 1 2 3 4 int x[] = { 1, 10, 100, 5, 4}; reverseArray(x, 5); for(int i=0; i<5; i++) cout << x[i] << ' '; // 4 5 100 10 1์ด ์ถœ๋ ฅ๋œ๋‹ค. Execution Result: Objective & Hints: ํ…œํ”Œ๋ฆฟ ํ•จ์ˆ˜ ๋งŒ๋“ค๊ธฐ ...

March 9, 2020 ยท 1 min ยท Sobamemil
๐Ÿ’ป Dev & CSC++ Programming

C++ Programming Ch.10 Exercise 2 Solution

Problem: ๋‘ ๊ฐœ์˜ ๋ฐฐ์—ด์„ ๋น„๊ตํ•˜์—ฌ ๊ฐ™์œผ๋ฉด true๋ฅผ, ์•„๋‹ˆ๋ฉด false๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” ์ œ๋„ค๋ฆญ ํ•จ์ˆ˜ equalArrays()๋ฅผ ์ž‘์„ฑํ•˜๋ผ. ๋˜ํ•œ main() ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•˜์—ฌ equalArrays()๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋ช‡ ๊ฐ€์ง€ ์‚ฌ๋ก€๋ฅผ ๋ณด์—ฌ๋ผ. equalArrays()๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ์ฝ”๋“œ ์‚ฌ๋ก€๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. 1 2 3 4 5 6 int x[] = {1, 10, 100, 5, 4}; int y[] = {1, 10, 100, 5, 4}; if(equalArray(x, y, 5)) cout << "๊ฐ™๋‹ค"; // ๋ฐฐ์—ด x, y๊ฐ€ ๊ฐ™์œผ๋ฏ€๋กœ "๊ฐ™๋‹ค" ์ถœ๋ ฅ else cout << "๋‹ค๋ฅด๋‹ค"; Execution Result: ...

March 9, 2020 ยท 1 min ยท Sobamemil
๐Ÿ’ป Dev & CSC++ Programming

C++ Programming Ch.10 Exercise 1 Solution

Problem: ๋ฐฐ์—ด์„ ๋ฐ›์•„ ๊ฐ€์žฅ ํฐ ๊ฐ’์„ ๋ฆฌํ„ดํ•˜๋Š” ์ œ๋„ค๋ฆญ ํ•จ์ˆ˜ biggest()๋ฅผ ์ž‘์„ฑํ•˜๋ผ. ๋˜ํ•œ main() ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•˜์—ฌ biggest()๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋ช‡ ๊ฐ€์ง€ ์‚ฌ๋ก€๋ฅผ ๋ณด์—ฌ๋ผ. Execution Result: Objective & Hints: ํ…œํ”Œ๋ฆฟ ํ•จ์ˆ˜ ๋งŒ๋“ค๊ธฐ biggest()๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ์ฝ”๋“œ ์‚ฌ๋ก€๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. 1 2 int x[] = {1, 10, 100, 5, 4}; cout << biggest(x, 5) << endl; // 5๋Š” ๋ฐฐ์—ด x์˜ ํฌ๊ธฐ. 100์ด ์ถœ๋ ฅ๋œ๋‹ค. Code: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #include using namespace std; template T biggest(T a[], T n){ T big = a[0]; // ๋ฐฐ์—ด a์˜ ์ฒซ๋ฒˆ์งธ ์›์†Œ๋ฅผ big์— ์‚ฝ์ž… for(T i=1; i<n; i++) big = big < a[i] ? a[i] : big; // big๋ณด๋‹ค a[i]์˜ ๊ฐ’์ด ๋” ํฌ๋ฉด big์— a[i]์˜ ๊ฐ’์„ ์‚ฝ์ž… return big; } int main() { int big = 0; int x[] = {1, 10, 100, 5, 4}; cout << biggest(x, 5) << endl; } Explanation: ...

March 9, 2020 ยท 1 min ยท Sobamemil