要求:
做一个简单的电子词典。在文件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; }
运行结果:
在这个程序中,当输入单词是不正常的,不知道为什么就是跳不出循环,
有人能提示一下吗!
时间: 2024-10-13 23:30:13