第十六周实践项目3————电子词典

问题及代码:
/*copyright(c)2016.烟台大学计算机学院
 * All rights reserved,
 * 文件名称:text.Cpp
 * 作者:吴敬超
 * 完成日期:2016年6月14日
 * 版本号:codeblock
 *
 * 问题描述:  电子词典
 * 输入描述:
 * 程序输出: 输出结果
 */
 #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);
    string getChinese();
    string getWord_class();
 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);
 }
 string Word::getChinese()
 {
     return chinese;
 }
 string Word::getWord_class()
 {
     return word_class;
 }
 class Dictionary
 {
 public:
     Dictionary();
     void searchWord(string k);
 private:
    int BinSearch(int low,int high,string k);
    int wordsnum;
    Word words[8000];
 };
 Dictionary::Dictionary()
 {
     string e,c,wc;
     wordsnum=0;
     ifstream infile("dictionary.txt",ios::in);
     if(!infile)
     {
         cerr<<"dictionary open error"<<endl;
         exit(1);
     }
     while(!infile.eof())
     {
         infile>>e>>c>>wc;
         words[wordsnum].set(e,c,wc);
         ++wordsnum;
     }
     infile.close();
 }
 int Dictionary::BinSearch(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::searchWord(string key)
 {
     int low=0,high=wordsnum-1;
     int index=BinSearch(low,high,key);
     if(index>=0)
     {
         cout<<key<<"----->"<<words[index].getWord_class()+"\t"<<words[index].getChinese();
     }
     else
     {
         cout<<"查无此词"<<endl;
     }
     cout<<endl<<endl;
 }
 int main()
 {
     Dictionary dict;
     string key;
     do
     {
         cout<<"请输入待查询的关键词(英文),0000结束:"<<endl;
         cin>>key;
         if(key!="0000")
         {
             dict.searchWord(key);
         }
     }while(key!="0000");
     cout<<"欢迎下次再使用!"<<endl;
     return 0;
 }

运行结果:


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值