#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;
}
15.3.1
最新推荐文章于 2022-01-02 14:45:17 发布