问题及代码:
/* 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; }
运行结果:
心得体会:
无论怎么改都是如图的运行结果。。。求助攻!