C++
실습문제. 클래스를 이용하여 단어장 만들기.
코다람쥐
2022. 1. 17. 11:39
문제. 아래의 WordPair구조체와 Mydic 클래스를 이용하여 영어와 한글이 한 쌍을 이루는 나만의 영어 단어장 프로그램을 구현하라.
ex)
apple 사과
decide 결정하다
struct WordPair {
string eng;
string kor;
};
class MyDic {
WordPair words[100]; // 저장된 단어 배열
int nWords = 0; // 현재 등록된 단어의 수
public :
void add(string eng, string kor); // 하나의 단어 추가
void load(string filename); // 파일에서 단어 읽기
void save(string filename); // 파일에 모든 단어 저장
void print(); // 모든 단어를 화면에 출력
string getEng(int id); // id번째의 영어단어 반환
string getKor(int id) { // id번째의 한글 설명 반환
};
정답.
#include <iostream>
#include <fstream>
using namespace std;
#define MAXWORDS 100
class MyDic {
struct WordPair {
string eng;
string kor;
};
WordPair words[MAXWORDS]; // 저장된 단어 배열
int nWords = 0; // 현재 등록된 단어의 수
public :
void add(string eng, string kor) { // 하나의 단어 추가
words[nWords].eng = eng;
words[nWords].kor = kor;
nWords++;
}
void load(string filename) { // 파일에서 단어 읽기
ifstream f1(filename);
if (f1) {
f1 >> nWords;
for (int i = 0; i < nWords; i++) {
f1 >> words[i].eng >> words[i].kor;
}
}
f1.close();
}
void save(string filename) { // 파일에 모든 단어 저장
ofstream f1(filename);
if (f1) {
f1 << nWords << endl;
for (int i = 0; i < nWords; i++) {
f1 << words[i].eng << " " << words[i].kor << endl;
}
}
f1.close();
}
void print() { // 모든 단어를 화면에 출력
for (int i = 0; i < nWords; i++) {
cout << words[i].eng << " " << words[i].kor << endl;
}
}
string getEng(int id) { // id번째의 영어단어 반환
return words[id].eng;
}
string getKor(int id) { // id번째의 한글 설명 반환
return words[id].kor;
}
};
int main()
{
MyDic word;
MyDic word2;
word.add("Coda", "천재");
word.add("decide", "결정하다");
word.save("words.txt");
word2.load("words.txt");
word2.print();
cout << word.getEng(0) << endl;
cout << word.getKor(1) << endl;
}