第十四周项目4-电子词典
做一个简单的电子词典。在文件dictionary.txt中,保存的是英汉对照的一个词典,词汇量近8000个,英文与释义间用’\t’隔开。
编程序,将文件中的内容读到两个数组e[]和c[]中,分别代表英文和中文,由用户输入英文词,显示中文意思。
运行程序后,支持用户连续地查词典,直到输入“0000”结束。
/* *Copyright (c) 2014,烟台大学计算机学院 *All gight reserved. *文件名称:temp.cpp *作者:邵帅 *完成时间:2014年11月29日 *版本号:v1.0 */ #include<fstream> #include<iostream> #include<cstdlib> #include<string> 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<<"没有找到这个词..."<<endl<<endl; continue; } cout<<e[i]<<"的中文意思是:"<<c[i]<<endl<<endl; } } //二分法查找函数 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; }
运行结果:
因为文件中的词汇已经排序,故在查找时,用二分查找法提高效率。
二分法查找:
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