第十四周 项目四:电子词典(修改版)
来源:互联网 发布:mac airdrop在哪 编辑:程序博客网 时间:2024/05/21 19:34
问题及代码:
/** Copyright (c) 2014, 烟台大学计算机学院* All rights reserved.* 文件名称:Project4.cpp* 作 者:李楠* 完成日期:2014年11月28日* 版 本 号:v1.0** 问题描述:做一个简单的电子词典。在文件dictionary.txt中,保存的是英汉对照的一个词典,词汇量近8000个, 英文与释义间用’\t’隔开。编程序,将文件中的内容读到两个数组e[]和c[]中,分别代表英文和中文, 由用户输入英文词,显示中文意思。运行程序后,支持用户连续地查词典,直到输入“0000”结束, 提示:文件中的词汇已经排序,故在查找时,用二分查找法提高效率。* 输入描述:单词* 程序输出:中文意思*/#include <iostream>#include <fstream>#include <cstdlib>#include <string>using namespace std;string ed[8000],cd[8000];int num=0;int wsearch(int low,int high,string k);int main(){ string key; ifstream infile("dictionary.txt",ios::in); if(!infile) { cerr<<"open error!"; exit(1); } while(num<=8000) { infile>>ed[num]; infile>>cd[num]; num++; } infile.close(); do { cout<<"请输入所要查找的单词,输入0000结束:"<<endl; cin>>key; if(key=="0000") break; else { int low=0,high=num-1; int index=wsearch(low,high,key); if(index==-1) cout<<"查无此词!"<<endl; else cout<<endl<<key<<"的中文意思是:"<<cd[index]<<endl<<endl; } }while(-1); cout<<"欢迎再次使用!"<<endl; return 0;}int wsearch(int low,int high,string k){ int mid; while(low<=high) { mid=(low+high)/2; if(ed[mid]==k) return mid; if(ed[mid]>k) high=mid-1; else low=mid+1; } return -1;}
运行结果:
知识点总结:
修改前和修改后的不同之处在于:
①将do语句中加上如果输入的是0000则直接跳出循环,而且while括号中的内容是-1,其中-1代表一个常量表达式,他永远不会等于0。所以,循环会一直执行下去。除非你设置break等类似的跳出循环语句循环才会中止。
②在endl后面再加endl是换两行,为了使界面更好看,可以这样操作。
学习心得:
精益求精,在学会怎样编程序的基础上不断地修改完善,才能有提高~
0 0
- 第十四周 项目四:电子词典(修改版)
- 第十四周项目四 电子词典(二分法)
- 第十四周项目四:电子词典
- 第十四周 项目四:电子词典
- 第十四周项目四:电子词典
- 第十四周项目四 电子词典
- 第十四周 项目四--电子词典
- 第十四周项目四电子词典
- 第十四周项目四 电子词典
- 第十四周项目四——电子词典
- 第十四周项目四——电子词典
- 第十四周项目四—电子词典
- 第十四周项目四之电子词典
- 第十四周项目-电子词典
- 第十四周项目三 OOP版电子词典
- 第十四周 项目三:OOP版电子词典
- 第十四周项目3-OOP版电子词典
- 第十四周项目三:OOP版电子词典
- printf源码
- 图的深度遍历
- opengl 关于纹理贴图
- [UVA11542] Square 高斯消元
- ios gif图显示
- 第十四周 项目四:电子词典(修改版)
- 5.Dubbo原理解析-代理之Javassist字节码技术生成代理
- ReactiveCocoa 小结
- 插入排序
- 第13周 项目5-8 复制两方字符给第三方
- 面试题-1
- Linux命令date日期时间和Unix时间戳互转
- 语音播放逐帧动画
- ViewPager 和 PagerAdapter简单例子