第十五周项目3-电子词典

来源:互联网 发布:芜湖县淘宝产业园 编辑:程序博客网 时间:2024/06/05 05:53
/*      * 程序的版权和版本声明部分      * Copyright (c)2013, 烟台大学计算机学院学生      * All rightsreserved.      * 文件名称: .cpp                                 * 作    者:王英华                                  * 完成日期:2014年6月8日      * 版本号: v1.0            * 输入描述:电子词典     * 问题描述:略    */#include <fstream>#include<iostream>#include<string>#include<cstdlib>using namespace std;class Word{public:void set(string e, string c, string wc);int compare(string);  //英语部分与给定字符串比较,等于返回,大于返回,小于返回-1void display();private:string english;string chinese;string word_class;          //词的属性};void Word::set(string e, string c, string wc){english=e;chinese=c;word_class=wc;}int Word::compare(string k){return english.compare(k);}void Word::display(){cout<<english<<'\t'<<word_class<<'\t'<<chinese<<endl<<endl;}int BinSeareh(int low, int high, Word *w, string k);int BinSeareh(int low, int high, Word *w, string k){int mid;while(low<=high){mid=(low + high) / 2;if(w[mid].compare(k)==0){return mid; //查找成功返回}if(w[mid].compare(k)>0)high=mid-1; //继续在w[low..mid-1]中查找elselow=mid+1; //继续在w[mid+1..high]中查找}return -1; //当low>high时表示查找区间为空,查找失败}int main( ){Word words[8000]; //用于保存词库string e,c,wc;string key;      //查询关键词int wordsNum=0;  //词库中词数        //将文件中的数据读入到对象数组中ifstream infile("dictionary.txt",ios::in);  //以输入的方式打开文件if(!infile)       //测试是否成功打开{cerr<<"open error!"<<endl;exit(1);}while (!infile.eof()){infile>>e>>c>>wc;words[wordsNum].set(e, c, wc);++wordsNum;}            //输入待查关键词并用二分查找法进行查询do{cout<<"请输入待查询的关键词(英文),0000结束:"<<endl;cin>>key;if (key!="0000"){int low=0,high=wordsNum-1;                  //置当前查找区间上、下界的初值int index=BinSeareh(low, high, words, key);if (index == -1)cout<<"查无此词!"<<endl<<endl;elsewords[index].display();}}while(key!="0000");cout<<"欢迎再次使用!"<<endl<<endl;return 0;}
运行结果:
0 0
原创粉丝点击