第十七周 【项目7-电子词典结构体版】

旧城等待, 2022-08-06 04:29 197阅读 0赞
  1. 问题及代码:
  2. /*
  3. *Copyright (c) 2014,烟台大学计算机学院
  4. *ALL right reserved
  5. *文件名:电子词典
  6. *作者;童宇
  7. *完成日期:2014年12月22日
  8. *版本号v1.0
  9. *问题描述:电子词典
  10. *输入描述:输入一个英语单词
  11. *程序输出:输出它的词性以及中文含义
  12. */
  13. #include <iostream>
  14. #include <fstream>
  15. #include <cstdlib>
  16. #include <string>
  17. using namespace std;
  18. struct Word
  19. {
  20. string english;
  21. string chinese;
  22. string word_class;
  23. };
  24. int Middle (Word [],string word,int left,int right);
  25. int main()
  26. {
  27. int i,j,wordsNum=0,get;
  28. string in;
  29. Word words[8000];
  30. ifstream infile("dictionary.txt",ios::in); //以输入的方式打开文件
  31. if(!infile) //测试是否成功打开
  32. {
  33. cerr<<"open error!"<<endl;
  34. exit(1);
  35. }
  36. i=0;
  37. while(infile>>words[i].english>>words[i].chinese>>words[i].word_class)
  38. {
  39. ++wordsNum;
  40. ++i;
  41. }
  42. infile.close();
  43. int left=0,right=wordsNum;
  44. while(in!="0")
  45. {
  46. cout<<"请输入想查询的单词\n输入0结束!\n";
  47. cin>>in;
  48. get=Middle(words,in,left,right);
  49. if(get!=-1)
  50. cout<<" "<<words[get].word_class<<"\t"<<words[get].chinese<<endl<<endl;
  51. else
  52. {
  53. cout<<"该词典中没有这个单词!\n";
  54. }
  55. }
  56. return 0;
  57. }
  58. int Middle (Word words[],string word,int left,int right)
  59. {
  60. while(left<=right)
  61. {
  62. int half=(left+right)/2;
  63. if(words[half].english==word)
  64. {
  65. return half;
  66. }
  67. else if(words[half].english>word)
  68. {
  69. right=half-1;
  70. }
  71. else
  72. {
  73. left=half+1;
  74. }
  75. }
  76. return -1;
  77. }

运行结果:

Center

发表评论

表情:
评论列表 (有 0 条评论,197人围观)

还没有评论,来说两句吧...

相关阅读

    相关

    一.学习   1.这一周基本上进入复习周了,大家都在备考当中,而我感觉这一周的效率不是很高,没有复习到多少东西,进度和16周的没有什么区别,所以自己内心还是有点小慌张