十三周——输入输出流——项目三 电子词典求助!!!
2015-06-09 20:35
169 查看
问题及代码:
运行结果:
心得体会:
无论怎么改都是如图的运行结果。。。求助攻!
/* Copyright (c) 2014,烟台大学计算机学院 *All rights reserved. *文件名称:lily.cpp *作者:李莉 *完成日期:2015年6月3日 *版本号:v1.0 *问题描述)使用这个词典,读入一篇文章,输出对其中的所词的解释。例如,对aboutcpp.txt,输出如下左图结果所示(也可以看到其中待改进的地方)。 程序输入:输入若干正数 程序输出:运行结果 */ #include <fstream> #include <iostream> #include <cstdlib> #include <string> using namespace std; class Word { public: void set(string e,string c,string wc); int compare(string); string getChinese(); string getWordClass(); 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::getWordClass() { return word_class; } class Dictionary { public: Dictionary(); string searchWord(string k); private: int Binsearch(int low,int high,string k); int wordnum; Word words [8000]; }; Dictionary::Dictionary() { int wordnum=0; string e,c,wc; ifstream infile("dictionary.txt",ios::in); if(!infile) { cerr<<"open error!"<<endl; exit(1); } while(!infile.eof()) { infile>>e>>c>>wc; words[wordnum].set(e,c,wc); wordnum++; } infile.close(); } int Dictionary::Binsearch(int low,int high,string k) { int mid; while(low<=high) { mid=(low+high)/2; if(words[mid].compare(k)==0) { return mid; } if(words[mid].compare(k)>0) { high=mid-1; } else { low=mid+1; } } return -1; } string Dictionary::searchWord(string k) { int low=0,high=wordnum-1; int index=Binsearch(low,high,k); if(index>=0) return words[index].getWordClass()+words[index].getChinese(); else return "查无此词!"; } int main() { Dictionary dict; ifstream infile("aboutcpp.txt",ios::in); if(!infile) { cerr<<"open error!"<<endl; exit(1); } string word; while(infile>>word) { cout<<word<<"---------------"<<dict.searchWord(word)<<endl; } infile.close(); return 0; }
运行结果:
心得体会:
无论怎么改都是如图的运行结果。。。求助攻!
相关文章推荐
- 哈希表开放寻址法之线性探测法解决冲突问题
- zz 牛人啊
- openwrt gstreamer实例学习笔记(七. gstreamer 缓冲区(Buffers)和事件(Events))
- 【剑指offer】 面试题50: 树中两个结点的最低公共祖先
- Error Code: 1318. Incorrect number of arguments for PROCEDURE company.new_procedure; expected 2, got
- Unity3D NGUI如何在UI上显示3D模型
- NGUI: UIToggle
- ROS环境下进行package的简单创建并编译
- Error Code: 1318. Incorrect number of arguments for PROCEDURE company.new_procedure; expected 2, got
- java多线程 ThreadPoolExecutor 策略的坑
- HDU 1875-kruskal
- <学习笔记>Postfix邮件服务器的详细配置
- SpringMVC+MyBatis项目总结(四)
- C++ protected 和 private 在子类继承时的区别
- [MFC]Shapes程序(4):菜单项的加速键、MFC注释宏
- Spring4+Hibernate4+junit4环境搭建
- nginx学习(一)
- 用对话框指针来控制创建关闭和清除子对话框
- Spring学习笔记之Spring事务及事务测试
- POJ 2761 Feed the dogs(树状数组求区间第K大)