15.3.1

来源:互联网 发布:oracle恢复数据方式 编辑:程序博客网 时间:2024/06/06 04:18
#include <iostream>#include<fstream>#include<cstdlib>#include<string>using namespace std;class Word{public:    void set(string e,string c,string w);    int compare(string k);    string getchinese();    string getword_class();private:    string english;    string chinese;    string word_class;};void Word::set(string e,string c,string w){    english=e;    chinese=c;    word_class=w;}string Word::getchinese(){    return chinese;}string Word::getword_class(){    return word_class;}int Word::compare(string k){    return english.compare(k);}class Dictionary{public:    Dictionary();    int check(int ,int ,string );    void checkword(string);private:    Word words[8000];    int wordsnum;};Dictionary::Dictionary(){    wordsnum=0;    string e,c,w;    ifstream infile("dictioary.txt",ios::in);    if(!infile)    {        cerr<<"open error!"<<endl;        exit(1);    }    while(!infile.eof())    {        infile>>e>>c>>w;        words[wordsnum].set(e,c,w);        wordsnum++;    }    infile.close();}int Dictionary::check(int low,int high,string key){    int mid;    while(low<=high)    {        mid=(low+high)/2;        if(words[mid].compare(key)==0)            return mid;        if(words[mid].compare(key)>0)        {            high=mid-1;        }        else            low=mid+1;    }    return -1;}void Dictionary::checkword(string key){    int low=0,high=wordsnum-1;    int s=check(low,high,key);    if(s>0)    {        cout<<key<<"-->"<<words[s].getchinese()<<'\t'<<words[s].getword_class()<<endl;    }    else        cout<<"error!!!!"<<endl;}int main(){    Dictionary dic;    string key;    do    {        cout<<"请输入待查询的关键词(英文),0000结束:"<<endl;        cin>>key;        if (key!="0000")        {            dic.checkword(key);        }    }    while(key!="0000");    cout<<"欢迎再次使用!"<<endl<<endl;    return 0;}

0 0
原创粉丝点击