C++ Programming Ch.6 Exercise 8 Solution

Problem: ๋””๋ฒ„๊น…์— ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋Š” Trace ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์–ด๋ณด์ž. ์ €์ž์˜ ๊ฒฝํ—˜์— ์˜ํ•˜๋ฉด, ๋ฉ€ํ‹ฐํƒœ์Šคํฌ ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ•˜๊ฑฐ๋‚˜ ํŠน๋ณ„ํ•œ ํ™˜๊ฒฝ์—์„œ ์ž‘์—…ํ•  ๋•Œ, Visual Studio์˜ ๋””๋ฒ„๊ฑฐ์™€ ๊ฐ™์€ ์†Œ์Šค ๋ ˆ๋ฒจ ๋””๋ฒ„๊ฑฐ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋”๋Ÿฌ ์žˆ์—ˆ๊ณ , ์ด๋•Œ ์‹คํ–‰ ๋„์ค‘ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด Trace ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ•˜์˜€๋‹ค. Trace ํด๋ž˜์Šค๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋‹ค์Œ ํ”„๋กœ๊ทธ๋žจ๊ณผ ๊ฒฐ๊ณผ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ Trace ํด๋ž˜์Šค๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์ „์ฒด ํ”„๋กœ๊ทธ๋žจ์„ ์™„์„ฑํ•˜๋ผ. ๋””๋ฒ„๊น… ์ •๋ณด๋Š” 100๊ฐœ๋กœ ์ œํ•œํ•œ๋‹ค. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 void f() { int a, b, c; cout << "๋‘ ๊ฐœ์˜ ์ •์ˆ˜๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”>>"; cin >> a >> b; Trace::put("f()", "์ •์ˆ˜๋ฅผ ์ž…๋ ฅ ๋ฐ›์•˜์Œ"); // ๋””๋ฒ„๊น… ์ •๋ณด ์ €์žฅ c = a + b; Trace::put("f()", "ํ•ฉ ๊ณ„์‚ฐ"); // ๋””๋ฒ„๊น… ์ •๋ณด ์ €์žฅ cout << "ํ•ฉ์€ " << c << endl; } int main() { Trace::put("main()", "ํ”„๋กœ๊ทธ๋žจ์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค"); // ๋””๋ฒ„๊น… ์ •๋ณด ์ €์žฅ f(); Trace::put("main()", "์ข…๋ฃŒ"); // put()์˜ ์ฒซ ๋ฒˆ์งธ ๋งค๊ฐœ ๋ณ€์ˆ˜๋Š” ํƒœ๊ทธ์ด๊ณ  // ๋‘ ๋ฒˆ์งธ ๋งค๊ฐœ ๋ณ€์ˆ˜๋Š” ๋””๋ฒ„๊น… ์ •๋ณด์ด๋‹ค. Trace::print("f()"); // "f()" ํƒœ๊ทธ๋ฅผ ๊ฐ€์ง„ ๋””๋ฒ„๊น… ์ •๋ณด๋ฅผ ๋ชจ๋‘ ์ถœ๋ ฅํ•œ๋‹ค. Trace::print(); // ๋ชจ๋“  ๋””๋ฒ„๊น… ์ •๋ณด๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. } Execution Result: ...

March 6, 2020 ยท 3 min ยท Sobamemil

C++ Programming Ch.6 Exercise 7 Solution

Problem: ๋‹ค์Œ๊ณผ ๊ฐ™์€ static ๋ฉค๋ฒ„๋ฅผ ๊ฐ€์ง„ Random ํด๋ž˜์Šค๋ฅผ ์™„์„ฑํ•˜๋ผ(Open Challenge ํžŒํŠธ ์ฐธ๊ณ ). ๊ทธ๋ฆฌ๊ณ  Random ํด๋ž˜์Šค๋ฅผ ์ด์šฉํ•˜์—ฌ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋žœ๋คํ•œ ๊ฐ’์„ ์ถœ๋ ฅํ•˜๋Š” main() ํ•จ์ˆ˜๋„ ์ž‘์„ฑํ•˜๋ผ. main()์—์„œ Random ํด๋ž˜์Šค์˜ seed() ํ•จ์ˆ˜๋ฅผ ํ™œ์šฉํ•˜๋ผ. Execution Result: Objective & Hints: static ๋ฉค๋ฒ„๋ฅผ ๊ฐ€์ง„ ํด๋ž˜์Šค ๋งŒ๋“ค๊ธฐ ๋ฐ ์‚ฌ์šฉ ์—ฐ์Šต ์ •์ˆ˜๋ฅผ ๋žœ๋คํ•˜๊ฒŒ ์ƒ์„ฑํ•˜๋Š” ์ฝ”๋“œ๋Š” ๋‹ค์Œ์„ ์ด์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. 1 2 3 srand((unsigned)time(0)); // ํ•ญ์ƒ ๋‹ค๋ฅธ ๋žœ๋ค์ˆ˜๋ฅผ ๋ฐฉ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•œ seed ์„ค์ • int n = rand(); // 0์—์„œ RAND_MAX(32767) ์‚ฌ์ด์˜ ๋žœ๋คํ•œ ์ •์ˆ˜๊ฐ€ n์— ๋ฐœ์ƒ n = n % 100; // n์€ 0์—์„œ 99 ์‚ฌ์ด์˜ ์ •์ˆ˜ Code: ...

March 6, 2020 ยท 2 min ยท Sobamemil

C++ Programming Ch.6 Exercise 6 Solution

Problem: ๋™์ผํ•œ ํฌ๊ธฐ์˜ ๋ฐฐ์—ด์„ ๋ณ€ํ™˜ํ•˜๋Š” ๋‹ค์Œ 2๊ฐœ์˜ static ๋ฉค๋ฒ„ ํ•จ์ˆ˜๋ฅผ ๊ฐ€์ง„ ArrayUtiliry2 ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค๊ณ , ์ด ํด๋ž˜์Šค๋ฅผ ์ด์šฉํ•˜์—ฌ ์•„๋ž˜ ๊ฒฐ๊ณผ์™€ ๊ฐ™์ด ์ถœ๋ ฅ๋˜๋„๋ก ํ”„๋กœ๊ทธ๋žจ์„ ์™„์„ฑํ•˜๋ผ. 1 2 3 4 5 6 // s1๊ณผ s2๋ฅผ ์—ฐ๊ฒฐํ•œ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋™์  ์ƒ์„ฑํ•˜๊ณ  ํฌ์ธํ„ฐ ๋ฆฌํ„ด static int* concat(int s1[], int s2[], int size); // s1์—์„œ s2์— ์žˆ๋Š” ์ˆซ์ž๋ฅผ ๋ชจ๋‘ ์‚ญ์ œํ•œ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋™์  ์ƒ์„ฑํ•˜์—ฌ ๋ฆฌํ„ด // ๋ฆฌํ„ดํ•˜๋Š” ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋Š” retSize์— ์ „๋‹ฌ. retSize๊ฐ€ 0์ธ ๊ฒฝ์šฐ NULL ๋ฆฌํ„ด static int* remove(int s1[], int s2[], int size, int& retSize); Execution Result: ...

March 6, 2020 ยท 3 min ยท Sobamemil

C++ Programming Ch.6 Exercise 5 Solution

Problem: ๋™์ผํ•œ ํฌ๊ธฐ๋กœ ๋ฐฐ์—ด์„ ๋ณ€ํ™˜ํ•˜๋Š” ๋‹ค์Œ 2๊ฐœ์˜ static ๋ฉค๋ฒ„ ํ•จ์ˆ˜๋ฅผ ๊ฐ€์ง„ ArrayUtility ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์–ด๋ผ. 1 2 3 4 static void intToDouble(int source[], double dest[], int size); // int[]์„ double[]๋กœ ๋ณ€ํ™˜ static void doubleToInt(double source[], int dest[], int size); // double[]์„ int[]๋กœ ๋ณ€ํ™˜ ArrayUtility๋ฅผ ํ™œ์šฉํ•˜๋Š” main()์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. 1 2 3 4 5 6 7 8 9 10 11 12 13 int main() { int x[] = {1,2,3,4,5}; double y[5]; double z[] = {9.9,8.8,7.7,6.6,5.6}; ArrayUtility::intToDouble(x, y, 5); // x[] -> y[] for(int i=0; i<5; i++) cout << y[i] << ' '; cout << endl; ArrayUtility::doubleToInt(z, x, 5); // z[] -> x[] for(int i=0; i<5; i++) cout << x[i] << ' '; cout << endl; } Execution Result: ...

March 6, 2020 ยท 2 min ยท Sobamemil

C++ Programming Ch.6 Exercise 4 Solution

Problem: ๋‹ค์Œ ํด๋ž˜์Šค์— ์ค‘๋ณต๋œ ์ƒ์„ฑ์ž๋ฅผ ๋””ํดํŠธ ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์ง„ ํ•˜๋‚˜์˜ ์ƒ์„ฑ์ž๋กœ ์ž‘์„ฑํ•˜๊ณ  ํ…Œ์ŠคํŠธ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๋ผ. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 class MyVector{ int *mem; int size; public: MyVector(); MyVector(int n, int val); ~MyVector() { delete [] mem; } }; MyVector::MyVector() { mem = new int [100]; size = 100; for(int i=0; i<size; i++) mem[i] = 0; } MyVector::MyVector(int n, int val) { mem = new int [n]; size = n; for(int i=0; i<size; i++) mem[i] = val; } Execution Result: ...

March 6, 2020 ยท 2 min ยท Sobamemil

C++ Programming Ch.6 Exercise 3 Solution

Problem: ํ•จ์ˆ˜ big()์„ ํ˜ธ์ถœํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. 1 2 3 4 5 6 int main() { int x = big(3, 5); // 3๊ณผ 5์ค‘ ํฐ ๊ฐ’์€ 5๋Š” ์ตœ๋Œ€๊ฐ’ 100๋ณด๋‹ค ์ž‘์œผ๋ฏ€๋กœ, 5 ๋ฆฌํ„ด int y = big(300, 60); // 300๊ณผ 60 ์ค‘ ํฐ ๊ฐ’ 300์ด ์ตœ๋Œ€๊ฐ’ 100๋ณด๋‹ค ํฌ๋ฏ€๋กœ, 100๋ฆฌํ„ด int z = big(30, 60, 50); // 30๊ณผ 60 ์ค‘ ํฐ ๊ฐ’ 60์ด ์ตœ๋Œ€๊ฐ’ 50๋ณด๋‹ค ํฌ๋ฏ€๋กœ, 50๋ฆฌํ„ด cout << x << ' ' << y << ' ' << z << endl; } (1) big() ํ•จ์ˆ˜๋ฅผ 2๊ฐœ ์ค‘๋ณตํ•˜์—ฌ ์ž‘์„ฑํ•˜๊ณ  ํ”„๋กœ๊ทธ๋žจ์„ ์™„์„ฑํ•˜๋ผ. ...

March 5, 2020 ยท 2 min ยท Sobamemil

C++ Programming Ch.6 Exercise 2 Solution

Problem: Person ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” main() ํ•จ์ˆ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 class Person { int id; double weight; string name; public: void show() { cout << id << ' ' << weight << ' ' << name << endl; } }; int main() { Person grace, ashley(2, "Ashley"), helen(3, "Helen", 32.5); grace.show(); ashley.show(); helen.show(); } (1) ์ƒ์„ฑ์ž๋ฅผ ์ค‘๋ณต ์ž‘์„ฑํ•˜๊ณ  ํ”„๋กœ๊ทธ๋žจ์„ ์™„์„ฑํ•˜๋ผ. ...

March 5, 2020 ยท 2 min ยท Sobamemil

C++ Programming Ch.6 Exercise 1 Solution

Problem: add() ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” main() ํ•จ์ˆ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. 1 2 3 4 5 6 7 8 int main() { int a[] = {1,2,3,4,5}; int b[] = {6,7,8,9,10}; int c = add(a, 5); // ๋ฐฐ์—ด a์˜ ์ •์ˆ˜๋ฅผ ๋ชจ๋‘ ๋”ํ•œ ๊ฐ’ ๋ฆฌํ„ด int d = add(a, 5, b); // ๋ฐฐ์—ด a์™€ b์˜ ์ •์ˆ˜๋ฅผ ๋ชจ๋‘ ๋”ํ•œ ๊ฐ’ ๋ฆฌํ„ด cout << c << endl; // 15 ์ถœ๋ ฅ cout << d << endl; // 55 ์ถœ๋ ฅ } (1) add() ํ•จ์ˆ˜๋ฅผ ์ค‘๋ณต ์ž‘์„ฑํ•˜๊ณ  ํ”„๋กœ๊ทธ๋žจ์„ ์™„์„ฑํ•˜๋ผ. ...

March 5, 2020 ยท 2 min ยท Sobamemil

C++ Programming Ch.5 Exercise 12 Solution

Problem: ๋‹ค์Œ์€ ํ•™๊ณผ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” Dept ํด๋ž˜์Šค์™€ ์ด๋ฅผ ํ™œ์šฉํ•˜๋Š” main()์„ ๋ณด์—ฌ ์ค€๋‹ค. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 class Dept { int size; // scores ๋ฐฐ์—ด์˜ ํฌ๊ธฐ int* scores; // ๋™์  ํ• ๋‹น ๋ฐ›์„ ์ •์ˆ˜ ๋ฐฐ์—ด์˜ ์ฃผ์†Œ public: Dept(int size) { // ์ƒ์„ฑ์ž this->size = size; scores = new int[size]; } Dept(const Dept& dept); // ๋ณต์‚ฌ ์ƒ์„ฑ์ž ~Dept(); // ์†Œ๋ฉธ์ž int getSize() { return size; } void read(); // size ๋งŒํผ ํ‚ค๋ณด๋“œ์—์„œ ์ •์ˆ˜๋ฅผ ์ฝ์–ด scores ๋ฐฐ์—ด์— ์ €์žฅ bool isOver60(int index); // index์˜ ํ•™์ƒ์˜ ์„ฑ์ ์ด 60๋ณด๋‹ค ํฌ๋ฉด true ๋ฆฌํ„ด }; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 int countPass(Dept dept) { // dept ํ•™๊ณผ์— 60์  ์ด์ƒ์œผ๋กœ ํ†ต๊ณผํ•˜๋Š” ํ•™์ƒ์˜ ์ˆ˜ ๋ฆฌํ„ด int count = 0; for (int i = 0; i < dept.getSize(); i++) { if (dept.isOver60(i)) count++; } return count; } int main() { Dept com(10); // ์ด 10๋ช…์ด ์žˆ๋Š” ํ•™๊ณผ com com.read(); // ์ด 10๋ช…์˜ ํ•™์ƒ๋“ค์˜ ์„ฑ์ ์„ ํ‚ค๋ณด๋“œ๋กœ๋ถ€ํ„ฐ ์ฝ์–ด scores ๋ฐฐ์—ด์— ์ €์žฅ int n = countPass(com); // com ํ•™๊ณผ์— 60์  ์ด์ƒ์œผ๋กœ ํ†ต๊ณผํ•œ ํ•™์ƒ์˜ ์ˆ˜๋ฅผ ๋ฆฌํ„ด cout << "60์  ์ด์ƒ์€ " << n << "๋ช…"; } (1) main()์˜ Execution Result๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋˜๋„๋ก Dept ํด๋ž˜์Šค์— ๋ฉค๋ฒ„๋“ค์„ ๋ชจ๋‘ ๊ตฌํ˜„ํ•˜๊ณ , ์ „์ฒด ํ”„๋กœ๊ทธ๋žจ์„ ์™„์„ฑํ•˜๋ผ. ...

March 5, 2020 ยท 5 min ยท Sobamemil

C++ Programming Ch.5 Exercise 11 Solution

Problem: ์ฑ…์˜ ์ด๋ฆ„๊ณผ ๊ฐ€๊ฒฉ์„ ์ €์žฅํ•˜๋Š” ๋‹ค์Œ Book ํด๋ž˜์Šค์— ๋Œ€ํ•ด ๋ฌผ์Œ์— ๋‹ตํ•˜์—ฌ๋ผ. 1 2 3 4 5 6 7 8 9 class Book { char *title; // ์ œ๋ชฉ ๋ฌธ์ž์—ด int price; // ๊ฐ€๊ฒฉ public: Book(const char* title, int price); ~Book(); void set(char* title, int price); void show() { cout << title << ' ' << price << "์›" << endl; } }; (1) Book ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž, ์†Œ๋ฉธ์ž, set() ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•˜๋ผ. set() ํ•จ์ˆ˜๋Š” ๋ฉค๋ฒ„ ๋ณ€์ˆ˜ title์— ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์žˆ์œผ๋ฉด ๋จผ์ € ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๊ณ  ๋‚˜์„œ ์ƒˆ๋กœ์šด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น๋ฐ›๊ณ  ์ด๊ณณ์— ๋งค๊ฐœ ๋ณ€์ˆ˜๋กœ ์ „๋‹ฌ๋ฐ›์€ ์ฑ…์ด๋ฆ„์„ ์ €์žฅํ•œ๋‹ค. ...

March 5, 2020 ยท 3 min ยท Sobamemil