当前位置:   article > 正文

电子词典_网络编程电子词典

网络编程电子词典
  1. /*
  2. *本代码处理词库问题
  3. *烟台大学:王飞
  4. *时间:2013.6.15
  5. */
  6. #include <fstream>
  7. #include<iostream>
  8. #include<string>
  9. #include<cstdlib>
  10. using namespace std;
  11. //定义学生类
  12. class Word
  13. {
  14. public:
  15. void set(string e, string c, string wc);
  16. int compare(string); //英语部分与给定字符串比较,等于返回,大于返回,小于返回-1
  17. void display();
  18. private:
  19. string english;
  20. string chinese;
  21. string word_class; //词的属性
  22. };
  23. void Word::set(string e, string c, string wc)
  24. {
  25. english=e;
  26. chinese=c;
  27. word_class=wc;
  28. }
  29. int Word::compare(string k)
  30. {
  31. return english.compare(k);
  32. }
  33. void Word::display()
  34. {
  35. cout<<english<<'\t'<<word_class<<'\t'<<chinese<<endl<<endl;
  36. }
  37. int BinSeareh(int low, int high, Word *w, string k);
  38. int BinSeareh(int low, int high, Word *w, string k)
  39. {
  40. int mid;
  41. while(low<=high)
  42. {
  43. mid=(low + high) / 2;
  44. if(w[mid].compare(k)==0)
  45. {
  46. return mid; //查找成功返回
  47. }
  48. if(w[mid].compare(k)>0)
  49. high=mid-1; //继续在w[low..mid-1]中查找
  50. else
  51. low=mid+1; //继续在w[mid+1..high]中查找
  52. }
  53. return -1; //当low>high时表示查找区间为空,查找失败
  54. }
  55. int main( )
  56. {
  57. Word words[8000]; //用于保存词库
  58. string e,c,wc;
  59. string key; //查询关键词
  60. int wordsNum=0; //词库中词数
  61. //将文件中的数据读入到对象数组中
  62. ifstream infile("dictionary.txt",ios::in); //以输入的方式打开文件
  63. if(!infile) //测试是否成功打开
  64. {
  65. cerr<<"open error!"<<endl;
  66. exit(1);
  67. }
  68. while (!infile.eof())
  69. {
  70. infile>>e>>c>>wc;
  71. words[wordsNum].set(e, c, wc);
  72. ++wordsNum;
  73. }
  74. //输入待查关键词并用二分查找法进行查询
  75. do
  76. {
  77. cout<<"请输入待查询的关键词(英文),0000结束:"<<endl;
  78. cin>>key;
  79. if (key!="0000")
  80. {
  81. int low=0,high=wordsNum-1; //置当前查找区间上、下界的初值
  82. int index=BinSeareh(low, high, words, key);
  83. if (index == -1)
  84. cout<<"查无此词!"<<endl<<endl;
  85. else
  86. words[index].display();
  87. }
  88. }
  89. while(key!="0000");
  90. cout<<"欢迎再次使用!"<<endl<<endl;
  91. return 0;
  92. }


输出结果:



心得体会:

以前做过电子词典,现在写起来还挺有点感觉,最主要是二分查找!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/75776?site
推荐阅读
相关标签
  

闽ICP备14008679号