πŸ’» Dev & CSC++ Programming

C++ Programming Ch.9 Exercise 9 Solution

Problem: λ‹€μŒ κ·Έλ¦Όκ³Ό 같은 상속 ꡬ쑰λ₯Ό κ°–λŠ” 클래슀λ₯Ό μ„€κ³„ν•œλ‹€. λͺ¨λ“  ν”„λ¦°ν„°λŠ” λͺ¨λΈλͺ…(model), μ œμ‘°μ‚¬(manufacturer), 인쇄 맀수(printedCount), 인쇄 쒅이 μž”λŸ‰(availableCount)을 λ‚˜νƒ€λ‚΄λŠ” 정보λ₯Ό κ°€μ§„λ‹€. print(int pages) ν•¨μˆ˜μ™€ show() ν•¨μˆ˜λŠ” 가상 ν•¨μˆ˜λ‘œ κ΅¬ν˜„ν•˜λΌ. print(int pages)λŠ” pages 만큼 ν”„λ¦°νŠΈν•˜λŠ” ν•¨μˆ˜μ΄κ³ , show() ν•¨μˆ˜λŠ” ν˜„μž¬ ν”„λ¦°νŠΈμ˜ λͺ¨λΈ, μ œμ‘°μ‚¬, 인쇄 맀수, 인쇄 쒅이 μž”λŸ‰ 등을 좜λ ₯ν•˜λŠ” ν•¨μˆ˜μ΄λ‹€. μž‰ν¬μ ― ν”„λ¦°ν„°λŠ” μž‰ν¬ μž”λŸ‰(availableInk) 정보λ₯Ό μΆ”κ°€μ μœΌλ‘œ κ°€μ§€λ©°, λ ˆμ΄μ € ν”„λ¦°ν„°λŠ” ν† λ„ˆ μž”λŸ‰(availableToner) 정보λ₯Ό μΆ”κ°€μ μœΌλ‘œ κ°€μ§„λ‹€. μ΄λ“€μ˜ print(int pages) 멀버 ν•¨μˆ˜λŠ” ν”„λ¦°ν„° νƒ€μž…μ— 맞게 κ΅¬ν˜„ν•˜λΌ. 각 클래슀λ₯Ό 섀계 κ΅¬ν˜„ν•˜κ³  λ‹€μŒκ³Ό 같이 μ‹€ν–‰λ˜λ„λ‘ 전체 ν”„λ‘œκ·Έλž¨μ„ μ™„μ„±ν•˜λΌ. InkJetPrinter 객체와 LaserPrinter 객체λ₯Ό 각각 ν•˜λ‚˜λ§Œ λ™μ μœΌλ‘œ μƒμ„±ν•˜μ—¬ μ‹œμž‘ν•œλ‹€. ...

November 26, 2019 Β· 3 min Β· Sobamemil
πŸ’» Dev & CSC++ Programming

C++ Programming Ch.9 Exercise 8 Solution

Problem: μ‚¬κ°ν˜•μ— λ‚΄μ ‘ν•˜λŠ” λ„ν˜•μ„ ν‘œν˜„ν•˜κΈ° μœ„ν•œ Shape ν΄λž˜μŠ€κ°€ μžˆλ‹€. 1 2 3 4 5 6 7 8 9 class Shape { protected: string name; // λ„ν˜•μ˜ 이름 int width, height; // λ„ν˜•μ΄ λ‚΄μ ‘ν•˜λŠ” μ‚¬κ°ν˜•μ˜ λ„ˆλΉ„μ™€ 높이 public: Shape(string n="", int w=0, int h=0) { name = n; width = w; height = h; } virtual double getArea() { return 0; } // dummy κ°’ 리턴 string getName() { return name; } // 이름 리턴 }; 문제 7에 μ£Όμ–΄μ§„ Shape 클래슀λ₯Ό 좔상 클래슀둜 λ§Œλ“€κ³  문제 7을 λ‹€μ‹œ μž‘μ„±ν•˜λΌ. ...

November 21, 2019 Β· 2 min Β· Sobamemil
πŸ’» Dev & CSC++ Programming

C++ Programming Ch.9 Exercise 7 Solution

Problem: μ‚¬κ°ν˜•μ— λ‚΄μ ‘ν•˜λŠ” λ„ν˜•μ„ ν‘œν•œν•˜κΈ° μœ„ν•œ Shape ν΄λž˜μŠ€κ°€ μžˆλ‹€. 1 2 3 4 5 6 7 8 9 class Shape { protected: string name; // λ„ν˜•μ˜ 이름 int width, height; // λ„ν˜•μ΄ λ‚΄μ ‘ν•˜λŠ” μ‚¬κ°ν˜•μ˜ λ„ˆλΉ„μ™€ 높이 public: Shape(string n="", int w=0, int h=0) { name = n; width = w; height = h; } virtual double getArea() { return 0; } // dummy κ°’ 리턴 string getName() { return name; } // 이름 리턴 }; Write a 타원을 ν‘œν˜„ν•˜λŠ” Oval, μ‚¬κ°ν˜•μ„ ν‘œν˜„ν•˜λŠ” Rect, μ‚Όκ°ν˜•μ„ ν‘œν˜„ν•˜λŠ” Triangular class that inherits from the Shape class. main()을 μž‘μ„±ν•˜κ³  μ‹€ν–‰ν•˜λ©΄ λ‹€μŒκ³Ό κ°™λ‹€. ...

November 21, 2019 Β· 2 min Β· Sobamemil
πŸ’» Dev & CSC++ Programming

C++ Programming Ch.9 Exercise 6 Solution

Problem: λ‹€μŒ AbstractStack은 μ •μˆ˜ μŠ€νƒ ν΄λž˜μŠ€λ‘œμ„œ 좔상 ν΄λž˜μŠ€μ΄λ‹€. 1 2 3 4 5 6 7 class AbstrackStack { public: virtual bool push(int n) = 0; // μŠ€νƒμ— n을 ν‘Έμ‹œν•œλ‹€. μŠ€νƒμ΄ full이면 false 리턴 virtual bool pop(int& n) = 0; // μŠ€νƒμ—μ„œ νŒν•œ μ •μˆ˜λ₯Ό n에 μ €μž₯ν•˜κ³  μŠ€νƒμ΄ empty이면 false 리턴 virtual int size() = 0; }; 이λ₯Ό 상속받아 μ •μˆ˜λ₯Ό ν‘Έμ‹œ, νŒν•˜λŠ” IntStack 클래슀λ₯Ό λ§Œλ“€κ³  μ‚¬μš© 사둀λ₯Ό 보여라. Objective & Hints: ...

November 21, 2019 Β· 2 min Β· Sobamemil
πŸ’» Dev & CSC++ Programming

C++ Programming Ch.9 Exercise 3 Solution

Problem: λ‹€μŒ 좔상 클래슀 LoopAdderκ°€ μžˆλ‹€. 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 class LoopAdder { // 좔상 클래슀 string name; // λ£¨ν”„μ˜ 이름 int x, y, sum; // xμ—μ„œ yκΉŒμ§€μ˜ 합은 sum void read(); // x, y 값을 읽어 λ“€μ΄λŠ” ν•¨μˆ˜ void write(); // sum을 좜λ ₯ν•˜λŠ” ν•¨μˆ˜ protected: LoopAdder(string name="") { // λ£¨ν”„μ˜ 이름을 λ°›λŠ”λ‹€. μ΄ˆκΉƒκ°’μ€ "" this->name = name; } int getX() { return x; } int getY() { return y; } virtual int calculate() = 0; // 순수 가상 ν•¨μˆ˜. 루프λ₯Ό 돌며 합을 κ΅¬ν•˜λŠ” ν•¨μˆ˜ public: void run(); // 연산을 μ§„ν–‰ν•˜λŠ” ν•¨μˆ˜ }; void LoopAdder::read() { // x, y μž…λ ₯ cout << name << ":" << endl; cout << "처음 μˆ˜μ—μ„œ λ‘λ²ˆμ§Έ μˆ˜κΉŒμ§€ λ”ν•œλ‹€. 두 수λ₯Ό μž…λ ₯ν•˜μ„Έμš” >> "; cin >> x >> y; } void LoopAdder::write() { // κ²°κ³Ό sum 좜λ ₯ cout << x << "μ—μ„œ " << y << "κΉŒμ§€μ˜ ν•© = " << sum << " μž…λ‹ˆλ‹€" << endl; } void LoopAdder::run() { read(); // x, yλ₯Ό μ½λŠ”λ‹€ sum = calculate(); // 루프λ₯Ό λŒλ©΄μ„œ κ³„μ‚°ν•œλ‹€. write(); // κ²°κ³Ό sum을 좜λ ₯ν•œλ‹€. } Write a λ‹€μŒ main() ν•¨μˆ˜μ™€ Execution Result처럼 λ˜λ„λ‘ ForLoopAdder class that inherits from the LoopAdder class. ForLoopAdder 클래슀의 calculate() ν•¨μˆ˜λŠ” for 문을 μ΄μš©ν•˜μ—¬ 합을 κ΅¬ν•œλ‹€. ...

November 21, 2019 Β· 3 min Β· Sobamemil
πŸ’» Dev & CSC++ Programming

C++ Programming Ch.9 Exercise 1 Solution

Problem: The following is an abstract class Converter that converts units. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #include using namespace std; class Converter { protected: double ratio; virtual double convert(double src)=0; // srcλ₯Ό λ‹€λ₯Έ λ‹¨μœ„λ‘œ λ³€ν™˜ν•œλ‹€. virtual string getSourceString()=0; // src λ‹¨μœ„ λͺ…μΉ­ virtual string getDestString()=0; // dest λ‹¨μœ„ λͺ…μΉ­ public: Converter(double ratio) { this->ratio = ratio; } void run(){ double src; cout << getSourceString() << "을 " << getDestString() << "둜 λ°”κΏ‰λ‹ˆλ‹€. "; cout << getSourceString() << "을 μž…λ ₯ν•˜μ„Έμš”>> "; cin >> src; cout << "λ³€ν™˜ κ²°κ³Ό : " << convert(src) << getDestString() << endl; } }; Write a λ‹¬λŸ¬λ₯Ό μ›ν™”λ‘œ ν™˜μ‚°ν•˜λŠ” WonToDollar class that inherits from the Converter class. The main() function and execution result are as follows. ...

November 20, 2019 Β· 2 min Β· Sobamemil