/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:电子词典
* 作 者:雷恒鑫
* 完成日期:2012 年06 月 02 日
* 版 本 号:V1.0
* 对任务及求解方法的描述部分
* 输入描述:。将文件中的内容读到对象数组中,由用户输入英文词。
* 问题描述:做一个简单的电子词典。在文件dictionary.txt 中,保存的是英汉对照的一个词典,词汇量近8000 个,
英文、中文释义与词性间用’\t’隔开。建一个表示词条的类Word,Word 类的一个对象可以描述一个词,
类对象数组可以存储词库。
* 程序输出:显示中文释义。
* 程序头部的注释结束
*/
#include<iostream>
#include<fstream>
#include<string>
#include<iomanip>
using namespace std;
int min(int a,int b);
class Word
{
public:
Word();
Word(string word,string word_meaning,string word_type);
void set_word(string word);
void set_word_meaning(string word_meaning);
void set_word_type(string word_type);
string get_word();
string get_word_meaning();
string get_word_type();
//friend ostream& operator << (ostream&,Word&); //重载流插入运算符“<<” ;*/
private:
string word;
string word_meaning;
string word_type;
};
void input_word(Word s[]);
Word search(string word,Word w1[]);
int main()
{
Word w1[8000],w2;
bool key=1;
string word;
input_word(w1);
while(key==1)
{
cout<<"请输入您要查找的单词:";
cin>>word;
w2=search(word,w1);
cout<<"您要查找单词的意思为:"<<w2.get_word_meaning()<<'\t'<<w2.get_word_type()<<endl;
cout<<"若想继续查词请按1,结束查词请按0!";
cin>>key;
}
system("PAUSE");
return 0;
}
int min(int a,int b)
{
if(a>b)
a=b;
return a;
}
Word::Word()
{
word="unknow";
word_meaning="unknow";
word_type="unknow";
}
Word::Word(string word,string word_meaning,string word_type)
{
this->word=word;
this->word_meaning=word_meaning;
this->word_type=word_type;
}
void input_word(Word s[])
{
int i=0;
string word;
string word_meaning;
string word_type;
ifstream infile("dictionary.txt",ios::in);
if (!infile)
{
cerr<<"open error!"<<endl;
exit(1);
}
for (i=0;i<8000;i++)
{
infile>>word;
s[i].set_word(word);
infile>>word_meaning;
s[i].set_word_meaning(word_meaning);
infile>>word_type;
s[i].set_word_type(word_type);
}
infile.close();
//cout<<endl;
}
void Word::set_word(string word)
{
this->word=word;
}
void Word::set_word_meaning(string word_meaning)
{
this->word_meaning=word_meaning;
}
void Word::set_word_type(string word_type)
{
this->word_type=word_type;
}
string Word::get_word()
{
return word;
}
string Word::get_word_meaning()
{
return word_meaning;
}
string Word::get_word_type()
{
return word_type;
}
Word search(string word,Word w1[])
{
Word w2,w3[8000];
for(int h=0;h<8000;++h)
w3[h]=w1[h];
int i=0;
int a=0,b=0,c;
w2.set_word(word);
string s1,s2,s3,s4;
int low=0,high=7962,mid;
s1=w1[low].get_word();
s2=w1[high].get_word();
s4=w2.get_word();
mid=(low+high)/2;
s3=w1[mid].get_word();
while(low<=high)
{
a=word.size();
b=s3.size();
c=min(a,b);
if(s3==word)
return w1[mid];
else if(a==b)
{
for (i = 0;i<a; ++i)
{
if(s3[i]!=s4[i])
{
if(s3[i]<s4[i])
{
low=mid+1;
break;
}
else
{
high=mid-1;
break;
}
}
}
if(s3==s4)
{
return w1[mid];
}
}
else if(a!=b)
{
for (i = 0;i<c; ++i)
{
if(s3[i]!=s4[i])
{
if(s3[i]<s4[i])
{
low=mid+1;
break;
}
else
{
high=mid-1;
break;
}
}
if(i==(c-1))
{
if(s3[i-1]==s4[i-1])
{
high=mid-1;
}
}
}
}
mid=(low+high)/2;
s1=w3[low].get_word();
s2=w3[high].get_word();
s3=w3[mid].get_word();
}
cerr<<"很遗憾,查无此词!";
exit(1);
return w2;
}
运行结果:
经验积累:
1.自我感觉还是直接用字符串从头到尾比较好一点,虽然效率有点低。
分享到:
相关推荐
1.版本:matlab2014/2019a/2021a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
android 源码学习. 资料部分来源于合法的互联网渠道收集和整理,供大家学习参考与交流。本人不对所涉及的版权问题或内容负法律责任。如有侵权,请通知本人删除。感谢CSDN官方提供大家交流的平台
libADLMIDI1-1.5.0-bp153.1.1.x86_64.rpm 是用于在 x86_64 架构的设备上安装的 RPM 包,具体功能如下: 名称:libADLMIDI1 版本:1.5.0 摘要:带有 OPL3 (YMF262) 模拟器的软件 MIDI 合成器库 许可证:GPL-3.0-only 和 LGPL-3.0-only 该库提供了一个基于 ADLMIDI 的软件 MIDI 合成器,它模拟了 OPL3 音源芯片(FM 合成)。它可以通过使用 ADLMIDI 库来实现多平台的 MIDI 播放和 OPL3 模拟。 该 RPM 包适用于 x86_64 架构,用于在相关设备上安装 libADLMIDI1 库文件。库文件包括: /usr/lib64/libADLMIDI.so.1 和 /usr/lib64/libADLMIDI.so.1.5.0:库文件 /usr/share/doc/packages/libADLMIDI1/AUTHORS、/usr/share/doc/packages/libADLMIDI1/README.md 等文档文件:文档文件
基于qt+C++实现u盘插拔检测.+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 基于qt+C++实现u盘插拔检测.+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 基于qt+C++实现u盘插拔检测.+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 基于qt+C++实现u盘插拔检测.+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~
Quectel_Product_Brochure_CN_V7.9.pdf
android 源码学习. 资料部分来源于合法的互联网渠道收集和整理,供大家学习参考与交流。本人不对所涉及的版权问题或内容负法律责任。如有侵权,请通知本人删除。感谢CSDN官方提供大家交流的平台
phpstudy
python入门
android 源码学习. 资料部分来源于合法的互联网渠道收集和整理,供大家学习参考与交流。本人不对所涉及的版权问题或内容负法律责任。如有侵权,请通知本人删除。感谢CSDN官方提供大家交流的平台
移动机器人机械臂的设计开题报告.doc
用法链接:https://menghui666.blog.csdn.net/article/details/137977678?spm=1001.2014.3001.5502 基于QT+C++开发的智能平台访客系统+源码,包含主界面、系统设置、警情查询、调试帮助、用户退出功能。 基于QT+C++开发的智能平台访客系统+源码,包含主界面、系统设置、警情查询、调试帮助、用户退出功能。 基于QT+C++开发的智能平台访客系统+源码,包含主界面、系统设置、警情查询、调试帮助、用户退出功能。
三菱机械臂校点说明.pptx
android 源码学习. 资料部分来源于合法的互联网渠道收集和整理,供大家学习参考与交流。本人不对所涉及的版权问题或内容负法律责任。如有侵权,请通知本人删除。感谢CSDN官方提供大家交流的平台
android 源码学习. 资料部分来源于合法的互联网渠道收集和整理,供大家学习参考与交流。本人不对所涉及的版权问题或内容负法律责任。如有侵权,请通知本人删除。感谢CSDN官方提供大家交流的平台
C语言诞生于美国的贝尔实验室,由丹尼斯·里奇(Dennis MacAlistair Ritchie)以肯尼斯·蓝·汤普森(Kenneth Lane Thompson)设计的B语言为基础发展而来,在它的主体设计完成后,汤普森和里奇用它完全重写了UNIX,且随着UNIX的发展,c语言也得到了不断的完善。为了利于C语言的全面推广,许多专家学者和硬件厂商联合组成了C语言标准委员会,并在之后的1989年,诞生了第一个完备的C标准,简称“C89”,也就是“ANSI C”,截至2020年,最新的C语言标准为2018年6月发布的“C18”。 [5] C语言之所以命名为C,是因为C语言源自Ken Thompson发明的B语言,而B语言则源自BCPL语言。 1967年,剑桥大学的Martin Richards对CPL语言进行了简化,于是产生了BCPL(Basic Combined Programming Language)语言。
python入门 单元测试和测试用例 Python标准库中的模块unittest提供了代码测试工具。 单元测试用于核实函数的某个防霾呢没有问题; 测试用例是一组单元测试,这些单元测试仪器一起核实函数在各种情形下的行为都符合要求。良好的测试用例考虑到了函数可能收到的各种收入,包含所有针对这些情形的测试。 全覆盖式测试用例包含一整套单元测试,涵盖了各种可能的函数使用方式。 对于大型项目,要实现全覆盖可能很难。通常,最初只要对针对代码的重要行为编写测试即可,等项目给广泛使用时再考虑全覆盖。 可通过的测试 创建测试用例的语法需要一段时间才能习惯,但测试用例创建后,再添加针对函数的单元测试就很简单了。要为函数编写测试用例,可先导入模块unittest以及要测试的函数,在创建一个继承unittest.TestCase的类,并编写一系列方法对函数行为的不同方面进行测试。 下面test_name_function.py一个只包含一个方法的测试用例,它检查函数get_formatted_name()在给定名和姓时能否正确的工作。
基于matlabbenders分解算法.zip
dsp工程设计讲座.ppt
Adams空间复杂机械臂动力学仿真研究.doc
【资源说明】 基于Android+OpenCV的车牌识别系统源码+使用文档+全部资料(优秀项目).zip基于Android+OpenCV的车牌识别系统源码+使用文档+全部资料(优秀项目).zip基于Android+OpenCV的车牌识别系统源码+使用文档+全部资料(优秀项目).zip 【备注】 1、该项目是个人高分毕业设计项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(如软件工程、计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!