-
명품 C++ 10장 Open ChallengeC++ 2018. 11. 17. 23:24
영어 어휘 테스트 프로그램 작성
영어 단어의 뜻 맞추기 게임을 만들어 보자. 영어 단어와 한글 단어로 구성되는 Word 클래스를 작성하고, vector<Word> v;로 벡터를 생성하고, 프로그램 내에서 여러 개의 Word 객체를 벡터에 삽입해 둔다. 그리고 다음 화면과 같이 랜덤하게 사용자에게 문제를 던지며, 4개의 한글 보기를 출력한다. 4개의 보기 중 정답을 제외한 3개는 벡터에 있는 단어 중에서 랜덤하게 선택한다. 이 문제에서 iterator는 사용할 필요 없다.
소스코드
#include <iostream>#include <string>#include <vector>#include <ctime>#include <cstdlib>using namespace std;class Word {string english;string korean;public:Word(string eng,string kor) {this->english = eng;this->korean = kor;}string getEng() { return english; }string getKor() { return korean; }};int main() {string example[4] = { "" };bool sw = false;srand((unsigned)time(0));cout << "영어 어휘 테스트를 시작합니다. 1~4 외 다른 입력시 종료합니다." << endl;vector<Word> v;v.push_back(Word("human", "인간"));v.push_back(Word("baby", "아기"));v.push_back(Word("society", "사회"));v.push_back(Word("photo", "사진"));v.push_back(Word("painting", "그림"));v.push_back(Word("love", "사랑"));v.push_back(Word("emotion", "감정"));v.push_back(Word("dall", "인형"));v.push_back(Word("animal", "동물"));v.push_back(Word("bear", "곰"));v.push_back(Word("trade", "거래"));int n;while (true) {int index = rand() % v.size();cout << v[index].getEng() << "?" << endl;int exIndex = rand() % 4; // 4개중에 하나에 정답 넣기example[exIndex] = v[index].getKor();for (int i = 0; i < 4 ; ++i) {if (i != exIndex) { // 정답을 제외하고 남은 칸에 보기 추가sw = true;while (sw) { // 보기에 중복이 없게 하기n = rand() % v.size();if (example[0] != v[n].getKor() &&example[1] != v[n].getKor() &&example[2] != v[n].getKor() &&example[3] != v[n].getKor()){example[i] = v[n].getKor();sw = false;}}}}for (int i = 0; i < 4; ++i)cout << "(" << i + 1 << ") " << example[i]<<' ';cout << ":>";int answer;cin >> answer;if (answer >= 1 && answer <= 4) {if (exIndex == answer-1)cout << "Excellent !!" << endl;elsecout << "No. !!" << endl;}elsebreak;}for (int i = 0; i < 4; ++i) // 초기화를 안해주면 중복인지 확인할 때 문제가 생김example[i] = "";}실행결과
vector 컨테이너 클래스를 다루는 문제입니다.
Word 클래스를 만들고 생성자를 통하여 초기화 후, 벡터에 삽입합니다.
'C++' 카테고리의 다른 글
명품 C++ 10장 16번 (0) 2018.11.17 명품 C++ 10장 15번 (0) 2018.11.17 명품 C++ 10장 14번 (0) 2018.11.17 명품 C++ 10장 13번 (0) 2018.11.17 명품 C++ 10장 12번 (0) 2018.11.17