-
大小: 2.91MB文件類(lèi)型: .zip金幣: 2下載: 0 次發(fā)布日期: 2023-09-08
- 語(yǔ)言: C/C++
- 標(biāo)簽: 詞典??數(shù)據(jù)結(jié)構(gòu)??C++??算法??
資源簡(jiǎn)介
這是一個(gè)包含六級(jí)詞庫(kù)的英語(yǔ)小詞典,適用于數(shù)據(jù)結(jié)構(gòu)課設(shè)和C++課設(shè),里面使用了折半查找,kmp匹配,隊(duì)列,棧等一些算法和數(shù)據(jù)結(jié)構(gòu),使用Qt5.8開(kāi)發(fā),帶有界面,里面的注釋詳細(xì),代碼規(guī)范,喜歡的朋友捧一下場(chǎng)吧

代碼片段和文件信息
#include?“HalfFindWord.h“
#include?“Word.h“
#include?
#include?
#include?
#include?
#include?
using?namespace?std;
HalfFindWord::HalfFindWord()
{
memset(fileName?‘\0‘?sizeof(fileName));
//生成26個(gè)字母,用于下面的
for?(int?i?=?65?j?=?0;?i?<=?106;?i++?j++)
{
alphabet[j]?=?i;
}
//初始化,表示沒(méi)有使用,使用的時(shí)候要先判斷是不是在26以內(nèi)
findNum?=?50;
}
HalfFindWord::~HalfFindWord()
{
}
/*
*函數(shù)根據(jù)flag的不同選擇調(diào)用不同的函數(shù)
*例如flag是FINDWORD的時(shí)候,選擇調(diào)用的是直接查找單詞
*當(dāng)flag是FINDFILE的時(shí)候,?選擇的是查找單詞的所在文件
*/
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;
}
}
}
/*
*采用折半查抄的方法
*找到字母開(kāi)頭對(duì)應(yīng)的字母對(duì)應(yīng)的文件
*/
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])? {
end?=?middle?-?1;
}
else?if(ChangToBig(needFindWord[0])?>?alphabet[middle])
{
start?=?middle?+?1;
}
middle?=?(start?+?end)?/?2;
}
return?true;
}
/*
*先使用折半查找找到文件
*然后使用折半查找的思想找到該文件中的單詞
*匹配的時(shí)候使用是樸素匹配算法
*/
int?HalfFindWord::findWord(char?*needToFindWord)
{
//用來(lái)存字典中有多少的單詞
int?count?=?0;
ifstream?file;
file.open(fileName);
if?(!file)
{
cout?<“打開(kāi)文件失敗!“?<????????//halfFindWord.setWord(“打開(kāi)文件失敗“);
????????halfFindWord.setFind(NOTFIND);
????????return?0;
????????//exit(1);
}
file?>>?count;
file.close();
int?start?end?middle;
start?=?1;
end?=?count;
middle?=?(start?+?end)?/?2;
//大小是根據(jù)Word里面的數(shù)據(jù)的大小定的
char?tempWordChineseSentence[SIZEOFWORD?+?SIZEOFCHINESE?+?SIZEOFSENTENCE];
char?tempWord[SIZEOFWORD];
char?tempChinese[SIZEOFCHINESE];
char?tempSentence[SIZEOFSENTENCE];
//標(biāo)志性變量表示用來(lái)調(diào)用數(shù)組中的第幾個(gè)子母
int?num;
//標(biāo)志性變量,用來(lái)表示是否對(duì)比到不同的字母
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?<“打開(kāi)文件失敗!“?<????????????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));
//把從文
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????目錄???????????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
............此處省略89個(gè)文件信息
評(píng)論
共有 條評(píng)論