第14周上机实践项目3——电子词典

做一个简单的电子词典。在文件dictionary.txt中,保存的是英汉对照的一个词典,词汇量近8000个,英文、中文释义与词性间用’\t’隔开。

代码

#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
class dictionary;
class Word
{
public:
    Word(){}
    void set(string e,string c,string w)
    {
        english=e;
        chinese=c;
        word_class=w;
    }
    friend class dictionary;
private:
    string english;
    string chinese;
    string word_class;
};
class dictionary
{
public:
    dictionary();
    void searchword(string en);
    int midsearch(int low,int high,string key);
private:
    int wordNum;
    Word word[8000];
};
dictionary::dictionary()
{
    fstream infile;
    string e,c,w;
    wordNum=0;
    infile.open("dictionary.txt",ios::in);
    if(!infile)
    {
        cout<<"dictionary.txt can't open"<<endl;
        exit(1);
    }
    while(!infile.eof())
    {
        infile>>e>>c>>w;
        word[wordNum].set(e,c,w);
        wordNum++;
    }
    infile.close();
}
int dictionary::midsearch(int low,int high,string key)
{
    int mid;
    while(low<=high)
    {
        mid=(low+high)/2;
        if(word[mid].english==key)
            return mid;
        else
            if(word[mid].english>key)
            high=mid-1;
        else
            low=mid+1;
    }
    return -1;
}
void dictionary::searchword(string en)
{
    int key=midsearch(0,wordNum-1,en);
    if(key)
        cout<<word[key].english<<"-->"<<word[key].word_class<<"\t"<<word[key].word_class<<endl;
    else
        cout<<"查无此词!"<<endl;
}
int main( )
{
    dictionary d;
    string w;
    cout<<"请输入要查找的单词:"<<endl;
    while(cin>>w)
    {
        d.searchword(w);
    }
    return 0;
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值