C++ Programming Ch.10 Exercise 16 Solution

Problem: vector<Shape*> v;를 이용하여 간단한 그래픽 편집기를 콘솔 바탕으로 만들어보자. 생성된 도형 객체를 v에 삽입하고 관리하라. 9장 Exercise Problem 10번의 힌트를 참고하라. Shape과 Circle, Line, Rect 클래스는 다음과 같다. 2019/11/26 - [C++/명품 C++ programming] - 명품 C++ programming Exercise Problem 9장 10번 [명품 C++ programming Exercise Problem 9장 10번 Problem: 간단한 그래픽 편집기를 콘솔 바탕으로 만들어보자. 그래픽 편집기의 기능은 "삽입", "삭제", "모두보기", "종료" 의 4가지이고, 실행 과정은 다음과 같다. Objective & Hints: 추상 클래스, 상속 종합 응용 S.. ...

March 11, 2020 · 3 min · Sobamemil

C++ Programming Ch.10 Exercise 13 Solution

Problem: map 컨테이너를 이용하여 (이름, 성적)을 저장하고 이름으로 성적을 조회하는 점수 관리 프로그램을 만들어라. 이름은 빈칸 없이 입력하는 것을 원칙으로 한다. Execution Result: Objective & Hints: map 컨테이너 활용 이름과 점수를 쌍으로 저장할 맵 컨테이너로 map<string, int>를 이용하면 된다. 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 #include #include #include using namespace std; int main() { map<string, int> Score; // map 컨테이너 생성. 키는 한글 이름, 값은 정수 점수 cout << "***** 점수관리 프로그램 HIGH SCORE을 시작합니다 *****\n"; while(true){ int num; int score; string name; cout << "입력:1, 조회:2, 종료:3 >> "; cin >> num; switch (num){ case 1: cout << "이름과 점수>> "; cin >> name >> score; Score.insert(make_pair(name, score)); // map에 저장 break; case 2: cout << "이름 >> "; cin >> name; if(Score.find(name) == Score.end()) // name '키'를 끝까지 찾았는데 없음 cout << "없음" << endl; else cout << name << "의 점수는 " <<Score[name] << endl; // Score에서 name의 값을 찾아 출력 break; case 3: cout << "프로그램을 종료합니다...\n"; return 0; default : cout << "제대로 입력해\n"; break; } } } Explanation: ...

March 11, 2020 · 2 min · Sobamemil

C++ Programming Ch.10 Exercise 12 Solution

Problem: Open Challenge를 수정하여 사용자가 어휘를 삽입할 수 있도록 기능을 추가하라. Execution Result는 다음과 같다. Execution Result: Objective & Hints: vector 컨테이너의 종합 응용 연습 랜덤 정수를 방생시키기 위해 다음 두 라인의 코드가 필요하며, 과 를 include 해야 합니다. 1 2 srand((unsigned)time(0)); // 시작할 때마다, 다른 랜덤수를 발생시키기 위한 seed 설정 int n = rand(); // 0에서 RAND_MAX(32767) 사이의 랜덤한 정수가 n에 발생 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 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 #include #include #include #include using namespace std; class Word { string engWord, korWord; public: Word(string engWord=0, string korWord=0){ this->engWord = engWord; this->korWord = korWord; } void inputWord(string engWord, string korWord){ this->engWord = engWord; this->korWord = korWord; } string getEngWord(){ return engWord; } string getKorWord(){ return korWord; } }; void inputWord(vector &v) { cout << "영어 단어에 exit을 입력하면 입력 끝\n"; string engWord, korWord; while(true){ cout << "영어 >>"; cin >> engWord; if(engWord == "exit") break; cout << "한글 >>"; cin >> korWord; v.push_back(Word(engWord, korWord)); } } void gameStart(vector &v) { srand((unsigned)time(0)); int num; cout << "영어 어휘 테스트를 시작합니다. 1~4 외 다른 입력시 종료.\n"; while(true){ int randNum = rand()%v.size(); cout << v.at(randNum).getEngWord() << "?\n"; string ex[4] = " "; int tmp = rand()%4; ex[tmp] = v.at(randNum).getKorWord(); for(int i=0; i<4; i++){ if(tmp == i) continue; while(true){ // 중복되는 숫자가 없게 처리 int numChosen = rand()%v.size(); if(ex[0]!=v.at(numChosen).getKorWord() && ex[1]!=v.at(numChosen).getKorWord() && ex[2]!=v.at(numChosen).getKorWord() && ex[3]!=v.at(numChosen).getKorWord()){ ex[i] = v.at(numChosen).getKorWord(); break; } } } for(int i=0; i<4; i++) cout << "(" << i+1 << ") " << ex[i] << ' '; cout << ":>"; cin >> num; // 숫자만 입력 if(num == -1

March 10, 2020 · 2 min · Sobamemil

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