资源简介
这是一个包含六级词库的英语小词典,适用于数据结构课设和C++课设,里面使用了折半查找,kmp匹配,队列,栈等一些算法和数据结构,使用Qt5.8开发,带有界面,里面的注释详细,代码规范,喜欢的朋友就下载一下吧
代码片段和文件信息
#include “HalfFindWord.h“
#include “Word.h“
#include
#include
#include
#include
#include
using namespace std;
HalfFindWord::HalfFindWord()
{
memset(fileName ‘\0‘ sizeof(fileName));
//生成26个字母,用于下面的
for (int i = 65 j = 0; i <= 106; i++ j++)
{
alphabet[j] = i;
}
//初始化,表示没有使用,使用的时候要先判断是不是在26以内
findNum = 50;
}
HalfFindWord::~HalfFindWord()
{
}
/*
*函数根据flag的不同选择调用不同的函数
*例如flag是FINDWORD的时候,选择调用的是直接查找单词
*当flag是FINDFILE的时候, 选择的是查找单词的所在文件
*/
int HalfFindWord::find(char *needToFindWord int flag)
{
if (flag == FINDWORD)
{
/*
*先找文件的位置
*然后找单词
*/
if (findFile(needToFindWord))
{
initFileName(findNum);
findWord(needToFindWord);
return true;
}
}
//找文件
else if (flag == FINDFILE)
{
if (findFile(needToFindWord))
{
initFileName(findNum);
return true;
}
}
}
/*
*采用折半查抄的方法
*找到字母开头对应的字母对应的文件
*/
int HalfFindWord::findFile(char *needFindWord)
{
int start = 0;
int end = 25;
int middle = (start + end) / 2;
while (1)
{
if (start > end)
{
return false;
break;
}
else if (ChangToBig(needFindWord[0]) == alphabet[middle])
{
findNum = alphabet[middle];
break;
}
else if (ChangToBig(needFindWord[0]) < alphabet[middle])
{
end = middle - 1;
}
else if(ChangToBig(needFindWord[0]) > alphabet[middle])
{
start = middle + 1;
}
middle = (start + end) / 2;
}
return true;
}
/*
*先使用折半查找找到文件
*然后使用折半查找的思想找到该文件中的单词
*匹配的时候使用是朴素匹配算法
*/
int HalfFindWord::findWord(char *needToFindWord)
{
//用来存字典中有多少的单词
int count = 0;
ifstream file;
file.open(fileName);
if (!file)
{
cout << “打开文件失败!“ << endl;
//halfFindWord.setWord(“打开文件失败“);
halfFindWord.setFind(NOTFIND);
return 0;
//exit(1);
}
file >> count;
file.close();
int start end middle;
start = 1;
end = count;
middle = (start + end) / 2;
//大小是根据Word里面的数据的大小定的
char tempWordChineseSentence[SIZEOFWORD + SIZEOFCHINESE + SIZEOFSENTENCE];
char tempWord[SIZEOFWORD];
char tempChinese[SIZEOFCHINESE];
char tempSentence[SIZEOFSENTENCE];
//标志性变量表示用来调用数组中的第几个子母
int num;
//标志性变量,用来表示是否对比到不同的字母
int flag;
while (1)
{
num = 0;
memset(tempWord ‘\0‘ sizeof(tempWord));
memset(tempChinese ‘\0‘ sizeof(tempChinese));
memset(tempSentence ‘\0‘ sizeof(tempSentence));
memset(tempWordChineseSentence ‘\0‘ sizeof(tempWordChineseSentence));
ifstream file(fileName);
if (!file)
{
cout << “打开文件失败!“ << endl;
exit(1);
}
file.getline(tempWordChineseSentence sizeof(tempWordChineseSentence));
memset(tempWordChineseSentence ‘\0‘ sizeof(tempWordChineseSentence));
file.seekg((abs(middle - 1)) * (sizeof(char) * (SIZEOFWORD + SIZEOFCHINESE + SIZEOFSENTENCE) - 3) ios::cur);
file.getline(tempWordChineseSentence sizeof(tempWordChineseSentence));
//把从文
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2017-07-01 20:59 Dictionary1_0\
文件 1756 2017-06-15 09:14 Dictionary1_0\Dictionary1_0.pro
文件 23972 2017-07-01 20:59 Dictionary1_0\Dictionary1_0.pro.user
文件 9478 2017-06-21 13:32 Dictionary1_0\HalfFindWord.cpp
文件 1479 2017-06-13 08:41 Dictionary1_0\HalfFindWord.h
文件 416 2017-06-20 21:07 Dictionary1_0\happyday.cpp
文件 342 2017-06-03 11:33 Dictionary1_0\happyday.h
文件 1301 2017-06-03 12:47 Dictionary1_0\happyday.ui
文件 8198 2017-06-21 13:33 Dictionary1_0\kmpsearch.cpp
文件 830 2017-06-16 13:58 Dictionary1_0\kmpsearch.h
文件 313 2017-06-12 09:22 Dictionary1_0\main.cpp
文件 10150 2017-06-21 09:45 Dictionary1_0\mainwindow.cpp
文件 1476 2017-06-15 08:54 Dictionary1_0\mainwindow.h
文件 9981 2017-06-16 09:39 Dictionary1_0\mainwindow.ui
文件 3161 2017-06-21 14:01 Dictionary1_0\myqueue.cpp
文件 388 2017-06-21 14:01 Dictionary1_0\myqueue.h
文件 2921 2017-06-21 09:45 Dictionary1_0\mystack.cpp
文件 673 2017-06-21 14:01 Dictionary1_0\mystack.h
文件 1059 2017-06-15 10:08 Dictionary1_0\photo.qrc
目录 0 2017-06-15 10:08 Dictionary1_0\photo\
文件 2405 2017-06-12 09:34 Dictionary1_0\photo\close.png
文件 11522 2017-05-24 17:03 Dictionary1_0\photo\EnglishToChinese.png
文件 3995 2017-05-23 22:19 Dictionary1_0\photo\file.png
文件 6913 2017-05-24 16:38 Dictionary1_0\photo\flag.png
文件 7063 2017-05-24 16:40 Dictionary1_0\photo\flag2.png
文件 10572 2017-05-24 16:41 Dictionary1_0\photo\flag3.png
文件 5727 2017-05-22 19:57 Dictionary1_0\photo\hamburger.png
文件 721020 2017-06-03 11:46 Dictionary1_0\photo\happy.png
文件 4175 2017-06-11 18:21 Dictionary1_0\photo\hello.png
文件 5180 2017-05-23 21:20 Dictionary1_0\photo\magnifyingGlass.png
文件 4502 2017-05-29 13:29 Dictionary1_0\photo\previous.png
............此处省略88个文件信息
- 上一篇:bmp图像的几何变换最近邻插值增大,双线性插值增大
- 下一篇:c/c++解决迷宫问题
相关资源
- Cryptography in C and C++
- c++标准程序库《》侯杰
- 打开DCM图像,C++
- 北京邮电大学大一C++期末考题.zip
- c++面试题题目集锦
- 传智播客扫地僧C++STL.zip
- Microsoft Visual C++ 2005 Redistributable Pack
- GPS RINEX o文件、n文件和sp3文件c++读取
- 点云数据txt格式
- 网络编程HttpServer c++实现
- VC++帮助文档
- C++ High PerformanceA Boost and optimize the p
- 运用opencv的c++图像单点相关系数匹配
- OpenGL开发的二维坦克大战游戏,小时
- 外卖管理系统含界面C++代码
- C++程序设计--谭浩强完整版
- 仿QQ登陆聊天界面源码C++
- 基于MFC的 数字相册
- VC++6.0对txt文件的增删改查操作
- 基于c++的贪吃蛇游戏设计
- C++ Builder 简体中文版入门教程
- 哈工大软件学院07级数据结构课程设计
- 最好的CS游戏opengl、C++实现
- ruminations on C++
- C++继承、派生 代码
- c++基于OpenGL的游戏源代码
- 简单回合制游戏C++
- C++打造流星雨特效源代码
- IP流量包分析程序
- Programming Abstractions in C++
评论
共有 条评论