码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-06-08 09:58:31      阅读:110      评论:0      收藏:0      [点我收藏+]

标签:c++   cpp   数据      编程   

做一个简单的电子词典。在文件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;
}


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

标签:c++   cpp   数据      编程   

原文地址:http://blog.csdn.net/blue_skyrim/article/details/46403383

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!