做一个简单的电子词典。在文件dictionary.txt中,保存的是英汉对照的一个词典,词汇量近8000个,英文与释义间用’\t’隔开。
编程序,将文件中的内容读到两个数组e[]和c[]中,分别代表英文和中文,由用户输入英文词,显示中文意思。
运行程序后,支持用户连续地查词典,直到输入“0000”结束。
/* *Copyright (c) 2014,烟台大学计算机学院 *All gight reserved. *文件名称:temp.cpp *作者:邵帅 *完成时间:2014年11月29日 *版本号:v1.0*/#include运行结果:#include #include #include using namespace std;int binary_search(string key,int n);string e[8000],c[8000];int num=0,i;string key;int main(){ //打开文件 ifstream infile("dictionary.txt",ios::in); if (!infile) { cout<<"打开文件失败!"; exit(1); } while (infile>>e[num]>>c[num]) num++; infile.close(); //开始查找 while (1) { cout<<"请输入要查询的词(0000结束):";cin>>key;if (key=="0000") { cout<<"感谢你的使用!"; break; }i=binary_search(key,num);if (i==-1) { cout<<"没有找到这个词..."< < key) high=mid-1; else low=mid+1; } return i;}
因为文件中的词汇已经排序,故在查找时,用二分查找法提高效率。
二分法查找:
int binary_search(string key,int n){ int i=-1; int low=0,high=n-1,mid; while (low<=high) { mid=(low+high)/2;//中间值 if (e[mid]==key) { i=mid; break; } else if (e[mid]>key) high=mid-1; else low=mid+1; } return i;如果都不符合则返回-1}
@ Mayuko