飛飛(七十六)OOP版电子词典
2016-06-21 18:58
225 查看
/* *Copyright (c) 2016,烟台大学计算机学院 *All rights reserved. *文件名称:test.cpp *作 者:李飞 *完成日期:2016年 6月 21日 *版 本 号:1.0 * *问题描述:做一个简单的电子词典。在文件dictionary.txt中,保存的是英汉对照的一个词典,词汇量近8000个,英文、中文释义与词性间用’\t’隔开。 *输入描述: *程序输出: */ #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 BinSeareh(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::BinSeareh(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=BinSeareh(low, high, key); if(index>=0) cout<<key<<"--->"<<words[index].getWord_class()+"\t"<<words[index].getChinese(); else cout<<"查无此词"; 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<<endl; return 0; }<img src="http://img.blog.csdn.net/20160621185824570?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- 关于指针的一些事情
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- Lua中调用C++函数示例
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- C++联合体转换成C#结构的实现方法
- C++高级程序员成长之路
- C++编写简单的打靶游戏
- C++ 自定义控件的移植问题
- C++变位词问题分析
- C/C++数据对齐详细解析
- C++基于栈实现铁轨问题
- C++中引用的使用总结
- 使用Lua来扩展C++程序的方法
- C++中调用Lua函数实例
- Lua和C++的通信流程代码实例
- C与C++之间相互调用实例方法讲解
- 解析C++中派生的概念以及派生类成员的访问属性