实验目的:
在文件dictionary.txt中,保存的是英汉对照的一个词典,词汇量近8000个,英文、中文释义与词性间用’\t’隔开。建一个表示词条的类Words,Words类的一个对象可以描述一个词,类对象数组可以存储词库。将文件中的内容读到对象数组中,由用户输入英文词,显示中文释义。
提示:文件中的词汇已经排序,故在查找时,用二分查找法提高效率。
拓展1:允许用户运行程序后,连续地查词典,直到输入”0000”结束。
/*拓展2:试着做一个窗口版的电子词典。
拓展3:使这个词典,读入一篇文章,输出其中的所有名词(或动词,或全部实词)。——搜索引擎用类似的功能,并不是所有词都值得索引*/
实验代码:
#include <fstream>
#include <string>
#include <iostream>
using namespace std;
class Word
{
public:
string chinese;
string english;
};
int main()
{
Word word[8000];
string x;
ifstream infile("dictionary.txt",ios::in);
if(!infile)
{
cerr << "open error!" << endl;
exit(1);
} //文件是否打开;
for(int i = 0; i < 8000; i++)
{
infile >> word[i].english >> word[i].chinese;
}
infile.close();
int i;
do
{
bool flag = false;
cout << "请输入您要查询的英语单词(直到输入0000结束):" << " ";
cin >> x;
for(i = 0; i < 8000; i++)
{
while(x == "0000")
{
flag = true;
exit(1);
}
if(x == word[i].english)
{
cout << word[i].chinese << endl;
flag = true;
break;
}
}
if(flag == false) cout<<"can't find this worrd"<<endl;
}while(word[i].english != "0000");
system("pause");
return 0;
}
实验结果:
请输入您要查询的英语单词(直到输入0000结束): word
n.字,词,诺言,音讯
请输入您要查询的英语单词(直到输入0000结束): bank
n.岸,银行
请输入您要查询的英语单词(直到输入0000结束): abandon
v.抛弃,放弃
请输入您要查询的英语单词(直到输入0000结束): 0000
实验心得:
个人觉得,这个程序对于我来说倒不算太难,因为在上个学期,老师给的任务中,有类似的题目,当时真的是煞费苦心啊,当然,当时因为没有学类,所以,用的是两个数组,chinese和english数组来用于存储从文件中输入的数据,这个题目中只是将这两个数组改为类中的数据成员就好了,所以,以前头疼过了,现在就好过多了,还有因为在输入0000时,会直接跳出程序,所以截图,只能截到这样,嗯,说到技术性的东西,do······while好久不用了,是个回顾的好机会,也就是用来处理直到输入0000结束程序是用到的,其他的,都还好吧~