要求:
做一个简单的电子词典。在文件dictionary.txt中,保存的是英汉对照的一个词典,词汇量近8000
个,英文、中文释义与词性间用’\t’隔开。
编程序,由用户输入英文词,显示词性和中文释义。
提示1:定义一个Word结构体表示一个词条,其中的数据成员stringenglish; 表示英文单词,stringchinese;表示
对应中文意思,stringword_class;表示该词的词性;定义Wordwords[8000]存放所有词条成员,intwordsNum;表示词
典中的词条数。
提示2:文件中的词汇已经排序,故在查找时,用二分查找法提高效率。
提示3:这样的项目,相关功能用函数实现,最好用多文件的形式组织
提示4:本项目的参考界面和未来的界面可以是下面的样子。不过暂时黑框框吧。
#include <iostream>
#include <fstream>
using namespace std;
struct Dict
{
string eng;
string cha;
string shu;
};
int main()
{
int i,num=0;
Dict word[8000];
ifstream infile("dictionary.txt",ios::in); //以输入的方式打开文件
i=0;
while(infile>>word[i].eng>>word[i].cha>>word[i].shu)
{
++num;
++i;
}
infile.close();
string Cin;
while(cout<<"请输入您要查找的英文单词:",cin>>Cin)
{
int high=num-1,low=-1;
int mid;
for(;low<high;)
{
mid=(high+low)/2;
if(word[mid].eng==Cin)
break;
else
{
if(word[mid].eng<Cin)
low=mid;
else high=mid;
}
}
if(low==high)
cout<<"抱歉,查无此词"<<endl;
else
cout<<word[mid].eng<<"<------"<<word[mid].cha<<" "<<word[mid].shu<<endl;
}
return 0;
}
在这个程序中,当输入单词是不正常的,不知道为什么就是跳不出循环,
有人能提示一下吗!
原文地址:http://blog.csdn.net/wh201458501106/article/details/42059173