๐Ÿ’ป Dev & CSC++ Programming

C++ Programming Ch.10 Exercise 10 Solution

Problem: ๋‚˜๋ผ์˜ ์ˆ˜๋„ ๋งž์ถ”๊ธฐ ๊ฒŒ์ž„์— vector๋ฅผ ํ™œ์šฉํ•ด๋ณด์ž. ๋‚˜๋ผ ์ด๋ฆ„(nation)๊ณผ ์ˆ˜๋„(capital) ๋ฌธ์ž์—ด๋กœ ๊ตฌ์„ฑ๋œ Nation ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค๊ณ , vector v;๋กœ ์ƒ์„ฑํ•œ ๋ฒกํ„ฐ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋‚˜๋ผ ์ด๋ฆ„๊ณผ ์ˆ˜๋„ ์ด๋ฆ„์„ ์‚ฝ์ž…ํ•  ์ˆ˜๋„ ์žˆ๊ณ  ๋žœ๋คํ•˜๊ฒŒ ํ€ด์ฆˆ๋ฅผ ๋ณผ ์ˆ˜๋„ ์žˆ๋‹ค. ํ”„๋กœ๊ทธ๋žจ ๋‚ด์—์„œ ๋ฒกํ„ฐ์— Nation ๊ฐ์ฒด๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ๋ฏธ๋ฆฌ ์‚ฝ์ž…ํ•˜์—ฌ ํ€ด์ฆˆ๋ฅผ ๋ณด๋„๋ก ํ•˜๋ผ. ์‹คํ–‰ ํ™”๋ฉด์€ ๋‹ค์Œ๊ณผ ๊ฐ™์œผ๋ฉฐ, ์ €์ž๋Š” 9๊ฐœ ๋‚˜๋ผ์˜ ์ด๋ฆ„๊ณผ ์ˆ˜๋„๋ฅผ ๋ฏธ๋ฆฌ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์‚ฝ์ž…ํ•˜์˜€๋‹ค. ๋ฌธ์ž์—ด์€ string ํด๋ž˜์Šค๋ฅผ ์ด์šฉํ•˜๋ผ. Execution Result: Objective & Hints: vector์— ๊ฐ์ฒด์˜ ์‚ฝ์ž…, ๊ฒ€์ƒ‰ ์‘์šฉ ์—ฐ์Šต ...

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

C++ Programming Ch.10 Exercise 9 Solution

Problem: STL์˜ vector ํด๋ž˜์Šค๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฐ„๋‹จํ•œ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•ด๋ณด์ž. vector ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ํ‚ค๋ณด๋“œ๋กœ๋ถ€ํ„ฐ ์ •์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›์„ ๋•Œ๋งˆ๋‹ค ์ •์ˆ˜๋ฅผ ๋ฒกํ„ฐ์— ์‚ฝ์ž…ํ•˜๊ณ  ์ง€๊ธˆ๊นŒ์ง€ ์ž…๋ ฅ๋œ ์ˆ˜์™€ ํ‰๊ท ์„ ์ถœ๋ ฅํ•œ๋А ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๋ผ. 0์„ ์ž…๋ ฅํ•˜๋ฉด ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋œ๋‹ค. Execution Result: Objective & Hints: vector ์ปจํ…Œ์ด๋„ˆ ํ™œ์šฉ ์—ฐ์Šต ์ •์ˆ˜๋งŒ ๋‹ค๋ฃจ๋Š” ๋ฒกํ„ฐ์ด๋ฏ€๋กœ vector v;๋ฅผ ์ด์šฉํ•˜๋ฉด ๋œ๋‹ค. iterator๋ฅผ ์‚ฌ์šฉํ•  ํ•„์š”๋Š” ์—†๋‹ค. Code: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #include #include using namespace std; int main() { vector v; double sum=0; while(true){ int tmp; cout << "์ •์ˆ˜๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”(0์„ ์ž…๋ ฅํ•˜๋ฉด ์ข…๋ฃŒ)>>"; cin >> tmp; if(!tmp) break; //์ž…๋ ฅํ•œ ์ •์ˆ˜๊ฐ€ 0์ด๋ฉด ์ข…๋ฃŒ v.push_back(tmp); // ์ž…๋ ฅํ•œ ์ •์ˆ˜๊ฐ€ 0์ด ์•„๋‹ˆ๋ฉด v์— ์‚ฝ์ž… for(int i=0; i<v.size(); i++) // vector v์˜ ๋ชจ๋“  ์›์†Œ ์ถœ๋ ฅ cout << v.at(i) << ' '; cout << endl; sum += tmp; cout << "ํ‰๊ท  = " << sum/v.size() << endl; } } Explanation: ...

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

C++ Programming Ch.10 Exercise 8 Solution

Problem: ๋ฌธ์ œ 7์„ ํ‘ธ๋Š” ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ์†Œ๊ฐœํ•œ๋‹ค. bigger() ํ•จ์ˆ˜์˜ ๋‹ค์Œ ๋ผ์ธ์—์„œ > ์—ฐ์‚ฐ์ž ๋•Œ๋ฌธ์— 1 if(a > b) return a; T์— Circle๊ณผ ๊ฐ™์€ ํด๋ž˜์Šค ํƒ€์ž…์ด ๋Œ€์ž…๋˜๋ฉด, ๊ตฌ์ฒดํ™”๊ฐ€ ์‹คํŒจํ•˜์—ฌ ์ปดํŒŒ์ผ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ถ”์ƒ ํด๋ž˜์Šค Comparable์„ ์ œ์•ˆํ•œ๋‹ค. 1 2 3 4 5 6 class Comparable { public: virtual bool operator > (Comparable& op2) = 0; // ์ˆœ์ˆ˜ ๊ฐ€์ƒ ํ•จ์ˆ˜ virtual bool operator < (Comparable& op2) = 0; // ์ˆœ์ˆ˜ ๊ฐ€์ƒ ํ•จ์ˆ˜ virtual bool operator == (Comparable& op2) = 0; // ์ˆœ์ˆ˜ ๊ฐ€์ƒ ํ•จ์ˆ˜ }; Circle ํด๋ž˜์Šค๊ฐ€ Comparable์„ ์ƒ์†๋ฐ›์•„ ์ˆœ์ˆ˜ ๊ฐ€์ƒ ํ•จ์ˆ˜๋ฅผ ๋ชจ๋‘ ๊ตฌํ˜„ํ•˜๋ฉด, ์•ž์˜ bigger() ํ…œํ”Œ๋ฆฟ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ์•„๋ฌด ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค. ...

March 9, 2020 ยท 2 min ยท Sobamemil
๐Ÿ’ป 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