πŸ’» Dev & CSC++ Programming

C++ Programming Ch.3 Exercise 8 Solution

Problem: int νƒ€μž…μ˜ μ •μˆ˜λ₯Ό κ°μ²΄ν™”ν•œ Integer 클래슀λ₯Ό μž‘μ„±ν•˜λΌ. Integer의 λͺ¨λ“  멀버 ν•¨μˆ˜λ₯Ό μžλ™ 인라인으둜 μž‘μ„±ν•˜λΌ. Integer 클래슀λ₯Ό ν™œμš©ν•˜λŠ” μ½”λ“œλŠ” λ‹€μŒκ³Ό κ°™λ‹€. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include #include using namespace std; int main() { Integer n(30); cout << n.get() << ' '; // 30 좜λ ₯ n.set(50); cout << n.get() << ' '; // 50 좜λ ₯ Integer m("300"); cout << m.get() << ' '; // 300 좜λ ₯ cout << m.isEven(); // true(μ •μˆ˜λ‘œ 1) 좜λ ₯ } Objective & Hints: ...

March 3, 2020 Β· 2 min Β· Sobamemil
πŸ’» Dev & CSC++ Programming

C++ Programming Ch.3 Exercise 7 Solution

Problem: 문제 5λ²ˆμ„ μ°Έκ³ ν•˜μ—¬ μƒμ„±μžλ₯Ό μ΄μš©ν•˜μ—¬ 짝수 ν™€μˆ˜λ₯Ό 선택할 수 μžˆλ„λ‘ SelectableRandom 클래슀λ₯Ό μž‘μ„±ν•˜κ³  짝수 10개, ν™€μˆ˜ 10개λ₯Ό λžœλ€ν•˜κ²Œ λ°œμƒμ‹œν‚€λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜λΌ. Objective & Hints: 클래슀 μž‘μ„±μ—μ„œ 맀개 λ³€μˆ˜λ₯Ό κ°€μ§„ μƒμ„±μžμ˜ ν™œμš© Execution Result: 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 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 #include #include #include using namespace std; class SelectableRandom{ int num; public: SelectableRandom(int _num); // λ§€κ°œλ³€μˆ˜λ‘œ 짝수 ν˜Ήμ€ ν™€μˆ˜λ₯Ό λ°›λŠ”λ‹€ int next(); int nextInRange(int a, int b); }; SelectableRandom::SelectableRandom(int _num){ num = _num; srand((unsigned)time(0)); } int SelectableRandom::next() { int ran = rand(); if(num%2 == 0){ // 짝수 return if(ran%2 == 0) return ran; else return --ran; } else { if(ran%2 == 0) // ν™€μˆ˜ return return ++ran; else return ran; } } int SelectableRandom::nextInRange(int a, int b){ int ran = rand()%(b-a+1) + a; if(num%2 == 0) { // 짝수 return if(ran%2 == 0) return ran; else return ++ran; } else { // ν™€μˆ˜ return if(ran%2 == 0) return ++ran; else return ran; } } int main() { SelectableRandom r1(0); // 짝수 랜덀 μ •μˆ˜ λ°œμƒ cout << "-- 0μ—μ„œ " << RAND_MAX << "κΉŒμ§€μ˜ 짝수 랜덀 μ •μˆ˜ 10 개--" << endl; for(int i=0; i<10; i++) { int n = r1.next(); cout << n << ' '; } SelectableRandom r2(1); // ν™€μˆ˜ 랜덀 μ •μˆ˜ λ°œμƒ cout << endl << endl << "-- 2μ—μ„œ " << "9 κΉŒμ§€μ˜ 랜덀 ν™€μˆ˜ μ •μˆ˜ 10 개 --" << endl; for(int i=0; i<10; i++) { int n = r2.nextInRange(2,9); cout << n << ' '; } cout << endl; } Explanation: ...

March 3, 2020 Β· 2 min Β· Sobamemil
πŸ’» Dev & CSC++ Programming

C++ Programming Ch.3 Exercise 6 Solution

Problem: 문제 5λ²ˆμ„ μ°Έκ³ ν•˜μ—¬ 짝수 μ •μˆ˜λ§Œ λžœλ€ν•˜κ²Œ λ°œμƒμ‹œν‚€λŠ” EvenRandom 클래슀λ₯Ό μž‘μ„±ν•˜κ³  EvenRandom 클래슀λ₯Ό μ΄μš©ν•˜μ—¬ 10개의 짝수λ₯Ό λžœλ€ν•˜κ²Œ 좜λ ₯ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μ™„μ„±ν•˜λΌ. 0도 짝수둜 μ²˜λ¦¬ν•œλ‹€. Objective & Hints: 클래슀 μž‘μ„± 및 클래슀 ν™œμš© Execution Result: 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 #include #include #include using namespace std; class EvenRandom{ public: EvenRandom(); int next(); int nextInRange(int a, int b); }; EvenRandom::EvenRandom(){ srand((unsigned)time(0)); } int EvenRandom::next() { int ran = rand(); if(ran%2 == 0) return ran; else return --ran; } int EvenRandom::nextInRange(int a, int b){ int ran = rand()%(b-a+1) + a; if(ran%2 == 0) return ran; else return --ran; } int main(){ EvenRandom r; cout << "-- 0μ—μ„œ " << RAND_MAX << "κΉŒμ§€μ˜ 랜덀 μ •μˆ˜ 10 개--" << endl; for(int i=0; i<10; i++) { int n = r.next(); // 0μ—μ„œ RAND_MAX(32767) μ‚¬μ΄μ˜ λžœλ€ν•œ μ •μˆ˜ cout << n << ' '; } cout << endl << endl << "-- 2μ—μ„œ " << "10 κΉŒμ§€μ˜ 랜덀 μ •μˆ˜ 10 개 --" << endl; for(int i=0; i<10; i++) { int n = r.nextInRange(2,10); // 2μ—μ„œ 10 μ‚¬μ΄μ˜ λžœλ€ν•œ μ •μˆ˜ cout << n << ' '; } cout << endl; } Explanation: ...

March 3, 2020 Β· 2 min Β· Sobamemil
πŸ’» Dev & CSC++ Programming

C++ Programming Ch.3 Exercise 5 Solution

Problem: 랜덀 수λ₯Ό λ°œμƒμ‹œν‚€λŠ” Random 클래슀λ₯Ό λ§Œλ“€μž. Random 클래슀λ₯Ό μ΄μš©ν•˜μ—¬ 랜덀 ν•œ μ •μˆ˜λ₯Ό 10개 좜λ ₯ν•˜λŠ” μ‚¬λ‘€λŠ” λ‹€μŒκ³Ό κ°™λ‹€. Random ν΄λž˜μŠ€κ°€ μƒμ„±μž, next(), nextInRange()의 3개의 멀버 ν•¨μˆ˜λ₯Ό 가지도둝 μž‘μ„±ν•˜κ³  main() ν•¨μˆ˜μ™€ 합쳐 ν•˜λ‚˜μ˜ cpp νŒŒμΌμ— κ΅¬ν˜„ν•˜λΌ. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 int main() { Random r; cout << "-- 0μ—μ„œ " << RAND_MAX << "κΉŒμ§€μ˜ 랜덀 μ •μˆ˜ 10 개--" << endl; for(int i=0; i<10; i++) { int n = r.next(); // 0μ—μ„œ RAND_MAX(32767) μ‚¬μ΄μ˜ λžœλ€ν•œ μ •μˆ˜ cout << n << ' '; } cout << endl << endl << "-- 2μ—μ„œ " << "4 κΉŒμ§€μ˜ 랜덀 μ •μˆ˜ 10 개 --" << endl; for(int i=0; i<10; i++) { int n = r.nextInRange(2,4); // 2μ—μ„œ 4 μ‚¬μ΄μ˜ λžœλ€ν•œ μ •μˆ˜ cout << n << ' '; } cout << endl; } Objective & Hints: ...

March 3, 2020 Β· 2 min Β· Sobamemil
πŸ’» Dev & CSC++ Programming

C++ Programming Ch.3 Exercise 4 Solution

Problem: CoffeeMachine 클래슀λ₯Ό λ§Œλ“€μ–΄λ³΄μž. main() ν•¨μˆ˜μ™€ Execution Resultκ°€ λ‹€μŒκ³Ό 같도둝 CoffeeMachine 클래슀λ₯Ό μž‘μ„±ν•˜λΌ. μ—μŠ€ν”„λ ˆμ†Œ ν•œ μž”μ—λŠ” 컀피와 물이 각각 1μ”© μ†ŒλΉ„λ˜κ³ , μ•„λ©”λ¦¬μΉ΄λ…Έμ˜ 경우 μ»€ν”ΌλŠ” 1, 물은 2κ°€ μ†ŒλΉ„λ˜κ³ , 섀탕 μ»€ν”ΌλŠ” 컀피 1, λ¬Ό 2, 섀탕 1이 μ†ŒλΉ„λœλ‹€. CoffeeMachine ν΄λž˜μŠ€μ—λŠ” μ–΄λ–€ 멀버 λ³€μˆ˜μ™€ μ–΄λ–€ 멀버 ν•¨μˆ˜κ°€ ν•„μš”ν•œμ§€ 잘 νŒλ‹¨ν•˜μ—¬ μž‘μ„±ν•˜λΌ. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include using namespace std; int main() { CoffeeMachine java(5, 10, 3); // μ»€ν”ΌλŸ‰:5, λ¬ΌλŸ‰:10, 섀탕:6 으둜 μ΄ˆκΈ°ν™” java.drinkEspresso(); // 컀피 1, λ¬Ό 1 μ†ŒλΉ„ java.show(); // ν˜„μž¬ 컀피 λ¨Έμ‹ μ˜ μƒνƒœ 좜λ ₯ java.drinkAmericano(); // 컀피 1, λ¬Ό 2 μ†ŒλΉ„ java.show(); // ν˜„μž¬ 컀피 λ¨Έμ‹ μ˜ μƒνƒœ 좜λ ₯ java.drinkSugarCoffee(); // 컀피 1, λ¬Ό 2, 섀탕 1 μ†ŒλΉ„ java.show(); // ν˜„μž¬ 컀피 λ¨Έμ‹ μ˜ μƒνƒœ 좜λ ₯ java.fill(); // 컀피 10, λ¬Ό 10, 섀탕 10 으둜 μ±„μš°κΈ° java.show(); // ν˜„μž¬ 컀피 λ¨Έμ‹ μ˜ μƒνƒœ 좜λ ₯ Execution Result: ...

March 3, 2020 Β· 2 min Β· Sobamemil
πŸ’» Dev & CSC++ Programming

C++ Programming Ch.3 Exercise 3 Solution

Problem: μ€ν–‰μ—μ„œ μ‚¬μš©ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜κΈ° μœ„ν•΄, 은행 κ³„μ’Œ ν•˜λ‚˜λ₯Ό ν‘œν˜„ν•˜λŠ” 클래슀 Accountκ°€ ν•„μš”ν•˜λ‹€. κ³„μ’Œ μ •λ³΄λŠ” κ³„μ’Œμ˜ 주인, κ³„μ’Œ 번호, μž”μ•‘μ„ λ‚˜νƒ€λ‚΄λŠ” 3 멀버 λ³€μˆ˜λ‘œ 이루어진닀. main() ν•¨μˆ˜μ˜ μ‹€ν–‰κ³Ό κ²°κ³Όκ°€ λ‹€μŒκ³Ό 같도둝 Account 클래슀λ₯Ό μž‘μ„±ν•˜λΌ. 1 2 3 4 5 6 7 8 9 10 #include using namespace std; int main() { Account a("Kitae", 1, 5000); // id 1번, μž”μ•‘ 5000원, 이름이 Kitae인 κ³„μ’Œ μ„± a.deposit(50000); // 50000원 μ €κΈˆ cout << a.getOwner() << "의 μž”μ•‘μ€ " << a.inquiry() << endl; int money = a.withdraw(20000); // 20000원 좜금. withdraw()λŠ” μΆœκΈˆν•œ μ‹€μ œ κΈˆμ•‘ 리턴 cout << a.getOwner() << "의 μž”μ•‘μ€ " << a.inquiry() << endl; } Execution Result: ...

March 2, 2020 Β· 2 min Β· Sobamemil
πŸ’» Dev & CSC++ Programming

C++ Programming Ch.3 Exercise 2 Solution

Problem: λ‚ μ§œλ₯Ό λ‹€λ£¨λŠ” Date 클래슀λ₯Ό μž‘μ„±ν•˜κ³ μž ν•œλ‹€. Dateλ₯Ό μ΄μš©ν•˜λŠ” main()κ³Ό Execution ResultλŠ” λ‹€μŒκ³Ό κ°™λ‹€. 클래슀 Dateλ₯Ό μž‘μ„±ν•˜μ—¬ μ•„λž˜ ν”„λ‘œκ·Έλž¨μ— μΆ”κ°€ν•˜λΌ. 1 2 3 4 5 6 7 8 9 #include using namespace std; int main() { Date virth(2014, 3, 20); Date independenceDay("1945/8/15"); independenceDay.show(); cout << birth.getYear() << ',' << birth.getMonth() << ',' << birth.getDay() << endl; } Execution Result: Objective & Hints: 2개의 μƒμ„±μžμ™€ μ—¬λŸ¬ 멀버λ₯Ό κ°€μ§„ 클래슀 λ§Œλ“€κΈ° ...

March 2, 2020 Β· 2 min Β· Sobamemil
πŸ’» Dev & CSC++ Programming

C++ Programming Ch.3 Exercise 1 Solution

Problem: μ•„λž˜ main()의 Execution Resultκ°€ λ‹€μŒκ³Ό 같도둝 Tower 클래슀λ₯Ό μž‘μ„±ν•˜λΌ. 1 2 3 4 5 6 7 8 9 #include using namespace std; int main() { Tower myTower; // 1 λ―Έν„° Tower seoulTower(100); // 100 λ―Έν„° cout << "λ†’μ΄λŠ” " << myTower.getHeight() << "λ―Έν„°" << endl; cout << "λ†’μ΄λŠ” " << seoulTower.getHeight() << "λ―Έν„°" << endl; } Objective & Hints: 2개의 μƒμ„±μžμ™€ μ—¬λŸ¬ 멀버λ₯Ό κ°€μ§„ 클래슀 λ§Œλ“€κΈ° ...

March 2, 2020 Β· 1 min Β· Sobamemil
πŸ’» Dev & CSC++ Programming

C++ Programming Ch.2 Exercise 16 Solution

Problem: 영문 ν…μŠ€νŠΈλ₯Ό μž…λ ₯λ°›μ•„ μ•ŒνŒŒλ²³ νžˆμŠ€ν† κ·Έλž¨μ„ κ·Έλ¦¬λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜λΌ. λŒ€λ¬ΈμžλŠ” λͺ¨λ‘ μ†Œλ¬Έμžλ‘œ μ§‘κ³„ν•˜λ©°, ν…μŠ€νŠΈ μž…λ ₯의 끝은 ';' 문자둜 ν•œλ‹€. Objective & Hints: λ¬Έμžμ—΄ 읽기, C++ ν”„λ‘œκ·Έλž¨ μ’…ν•© μ‘μš© Input File: μž…λ ₯ν•  ν…μŠ€νŠΈ νŒŒμΌμ„ μ²¨λΆ€ν•˜μ˜€μŠ΅λ‹ˆλ‹€. [2-16.txt 0.00MB](https://blog.kakaocdn.net/dna/EsAHK/btqChFfPBnw/AAAAAAAAAAAAAAAAAAAAAOhcwRebixdRiSrFB2r5c8Z4mBZDeCt4ibUUEp2n5aCw/2-16.txt?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1788188399&allow_ip=&allow_referer=&signature=PEoHUr5ktP9MyFLvskuQj0jS1Q8%3D&attach=1&knm=tfile.txt) Execution Result: 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 #include #include using namespace std; int main() { int tot=0; // 총 μ•ŒνŒŒλ²³ 개수 int alpha[27]={0}; // 각각의 μ•ŒνŒŒλ²³μ„ λ‚˜νƒ€λƒ„ char text[10000]; // textλ₯Ό μ €μž₯ν•  λ°°μ—΄ cout << "영문 ν…μŠ€νŠΈλ₯Ό μž…λ ₯ν•˜μ„Έμš”. νžˆμŠ€ν† κ·Έλž¨μ„ κ·Έλ¦½λ‹ˆλ‹€.\nν…μŠ€νŠΈμ˜ 끝은 ; μž…λ‹ˆλ‹€. 10000κ°œκΉŒμ§€ κ°€λŠ₯ν•©λ‹ˆλ‹€.\n"; cin.getline(text,10000,';'); // μ΅œλŒ€ 10,000개의 영문 ν…μŠ€νŠΈλ₯Ό ';'μ „κΉŒμ§€ μž…λ ₯λ°›λŠ”λ‹€ for (int i = 0; i<strlen(text); i++) { // text[0]λΆ€ν„° text의 λκΉŒμ§€ if (isalpha(text[i])) { // text[i]κ°€ μ•ŒνŒŒλ²³μ΄λ©΄ μ°Έ if(text[i]<91) text[i] = tolower(text[i]); // text[i]κ°€ λŒ€λ¬Έμžμ΄λ©΄ μ†Œλ¬Έμžλ‘œ λ³€κ²½ tot++; alpha[text[i] - 97]++; // 각각의 μ•ŒνŒŒλ²³μ΄ λͺ‡κ°œμΈμ§€ 카운트 } } cout << "총 μ•ŒνŒŒλ²³ 수 " << tot << endl << endl; for (int i = 0; i < 26; ++i) { // μ•ŒνŒŒλ²³μ˜ μ†Œλ¬Έμž 총 κ°œμˆ˜λŠ” 26개 (a~z) cout << (char)(i+'a') << "(" << alpha[i] << ")"; // aλΆ€ν„° zκΉŒμ§€ 좜λ ₯ ν›„ 각 (μ•ŒνŒŒλ²³μ˜ 개수) 좜λ ₯ cout << "\t: "; // 포맷을 좜λ ₯ν•˜κΈ° μœ„ν•΄ νƒ­κ³Ό ":" 좜λ ₯ for (int j = 1; j <= alpha[i]; j++) // 각 μ•ŒνŒŒλ²³μ˜ 개수만큼 "*" 좜λ ₯ cout << "*"; cout << endl; } } Explanation: ...

February 28, 2020 Β· 2 min Β· Sobamemil
πŸ’» Dev & CSC++ Programming

C++ Programming Ch.2 Exercise 15 Solution

Problem: λ§μ…ˆ(+), λΊ„μ…ˆ(-), κ³±μ…ˆ(*), λ‚˜λˆ—μ…ˆ(/), λ‚˜λ¨Έμ§€(%)의 μ •μˆ˜ 5μ²™ 연산을 ν•  수 μžˆλŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜λΌ. 식은 λ‹€μŒκ³Ό 같은 ν˜•μ‹μœΌλ‘œ μž…λ ₯λœλ‹€. μ •μˆ˜μ™€ μ—°μ‚°μžλŠ” ν•˜λ‚˜μ˜ 빈칸으둜 λΆ„λ¦¬λœλ‹€. Objective & Hints: 곡백을 ν¬ν•¨ν•˜λŠ” λ¬Έμžμ—΄ 읽기, C++ ν”„λ‘œκ·Έλž¨ μ’…ν•© μ‘μš© ν•œ 쀄을 λ¬Έμžμ—΄λ‘œ 읽고, 곡백 문자λ₯Ό μ°Ύμ•„ μ—°μ‚°μžμ™€ 두 개의 ν”Όμ—°μ‚°μžλ₯Ό κ΅¬λΆ„ν•œ ν›„, κ³„μ‚°ν•˜λ©΄ λ©λ‹ˆλ‹€. λ¬Έμžμ—΄μ„ μ •μˆ˜λ‘œ λ°”κΏ€ λ•Œ atoi() ν•¨μˆ˜λ₯Ό μ΄μš©ν•˜λ©΄ λ©λ‹ˆλ‹€. 예λ₯Ό λ“€λ©΄ atoi("34") = 34 μž…λ‹ˆλ‹€. Execution Result: 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 #include #include #include using namespace std; int main(){ char sic[100]; char *symbol; int front,rear; while(true){ cout << "? "; cin.getline(sic,100); front = atoi(strtok(sic, " ")); symbol = strtok(NULL, " "); rear = atoi(strtok(NULL, " ")); if(*symbol == '+'){ cout << front << " + " << rear << " = " << front+rear << endl; } else if(*symbol == '-'){ cout << front << " - " << rear << " = " << front-rear << endl; } else if(*symbol == '*'){ cout << front << " * " << rear << " = " << front*rear << endl; } else if(*symbol == '/'){ cout << front << " / " << rear << " = " << front/rear << endl; } else if(*symbol == '%'){ cout << front << " % " << rear << " = " << front%rear << endl; } } return 0; } Explanation: ...

February 28, 2020 Β· 2 min Β· Sobamemil