C/C++?Qt實(shí)現(xiàn)文章小說人物關(guān)系分析
更新時間:2023年01月09日 15:51:43 作者:alicema1111
這篇文章主要為大家詳細(xì)介紹了C/C++?Qt如何實(shí)現(xiàn)文章小說人物關(guān)系分析功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下
一、所需工具軟件
1. Visual Stuido
2. C++
二、使用步驟
1.引入庫
代碼如下(示例):
#include "QtGuiApplication1.h" #include<qDebug> #include<QFile> #include <fstream> #include<iostream> using namespace std; #include <sstream> #include <unordered_map>
2.創(chuàng)建元素操作函數(shù)
代碼如下(示例):
//讀取人物名稱 void QtGuiApplication1::readOnButton() { //打開關(guān)鍵詞文件 ifstream ifs; ifs.open("name.txt", ios::in); if (!ifs.is_open()) { cout << "打開文件失敗" << endl; return; } //一行一行讀取到數(shù)組中 string buf; while (getline(ifs, buf)) { cout << buf << endl; QString name = QString::buf); gNameList << name; } ifs.close(); ui.textEdit->setPlainText(gNameList); } //出現(xiàn)次數(shù) void QtGuiApplication1::timesOnButton() { qDebug() << QString::fromLocal8Bit("人名次數(shù)統(tǒng)計"); //統(tǒng)計歸零 if (gNameList.size() == 0) { std::cout << "請倒入人名列表后再試!" << std::endl; } gNameCounter.clear(); for (auto name : gNameList) { std::string key = name.toLocal8Bit(); gNameCounter[key] = 0; } //一行行讀入小說 ifstream ifs; ifs.open("天龍八部.txt", ios::in); if (!ifs.is_open()) { cout << "打開文件失敗" << endl; return; } //清空統(tǒng)計用的TABLE的數(shù)據(jù) gTable.clear(); //統(tǒng)計結(jié)果顯示到界面 QStringList result; for (auto name : gNameList) { std::string keyword = name.toLocal8Bit(); QString tmp = name + ":" + QString::number(gNameCounter[keyword]); result << tmp; std::cout << keyword << " " << gNameCounter[keyword] << std::endl; } ui.textEdit_3->setText(result.join("\n")); } //篇幅跨度 void QtGuiApplication1::rangeOnButton() { ui.textEdit_3->clear(); for (auto name : gNameList) { std::string keyword = name.toLocal8Bit(); int firstLineNum = -1; int lastLineNum = -1; for (int i = 0; i < gTable.size(); i++) { auto& row = gTable.at(i); //std::cout << "行號:" << i << " "; int KeyWordCounts = row[keyword]; if (KeyWordCounts > 0) { if (firstLineNum == -1) { firstLineNum = i; } lastLineNum = i; } } ui.textEdit_3->append(QString::number(lastLineNum - firstLineNum)); } } //關(guān)系最緊密兩人 void QtGuiApplication1::relationGoodOnButton() { ui.textEdit_3->clear(); qDebug() << "test"; //關(guān)系緊密算法,原理每個人名在第幾行出現(xiàn)的行數(shù)集合和另一個人名行數(shù)集合求距離,取最小值為它的精密度 //值越小的那個為此人和另一個人的最精密度,然后同樣的方法計算出此人與其它人的精密度,最終取得 //誰和這個人最緊密 std::map < std::string, std::vector<int>> DataContainer; //正在對比的兩個選手 std::string player1, player2; int theMinDistance = 9999999999999999; for (auto name : gNameList) { std::string keyword = name.toLocal8Bit(); std::vector<int> rowNums; for (int i = 0; i < gTable.size(); i++) { auto& row = gTable.at(i); //std::cout << "行號:" << i << " "; int KeyWordCounts = row[keyword]; if (KeyWordCounts > 0) { rowNums.push_back(i); } } DataContainer[keyword] = rowNums; } ui.textEdit_3->append(QString::number(theMinDistance)+ QStringLiteral("行")); }
三、運(yùn)行結(jié)果
到此這篇關(guān)于C/C++ Qt實(shí)現(xiàn)文章小說人物關(guān)系分析的文章就介紹到這了,更多相關(guān)Qt小說人物關(guān)系分析內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:
相關(guān)文章
C語言使用廣度優(yōu)先搜索算法解決迷宮問題(隊(duì)列)
這篇文章主要介紹了C語言使用廣度優(yōu)先搜索算法解決迷宮問題,結(jié)合迷宮問題分析了C語言隊(duì)列廣度優(yōu)先搜索算法的相關(guān)使用技巧,需要的朋友可以參考下2017-09-09C語言數(shù)據(jù)結(jié)構(gòu)系列篇二叉樹的概念及滿二叉樹與完全二叉樹
在上一章中我們正式開啟了對數(shù)據(jù)結(jié)構(gòu)中樹的講解,介紹了樹的基礎(chǔ)。本章我們將學(xué)習(xí)二叉樹的概念,介紹滿二叉樹和完全二叉樹的定義,并對二叉樹的基本性質(zhì)進(jìn)行一個簡單的介紹。本章附帶課后練習(xí)2022-02-02詳解state狀態(tài)模式及在C++設(shè)計模式編程中的使用實(shí)例
這篇文章主要介紹了state狀態(tài)模式及在C++設(shè)計模式編程中的使用實(shí)例,在設(shè)計模式中策略用來處理算法變化,而狀態(tài)則是透明地處理狀態(tài)變化,需要的朋友可以參考下2016-03-03數(shù)據(jù)結(jié)構(gòu)之歸并排序的實(shí)例詳解
這篇文章主要介紹了數(shù)據(jù)結(jié)構(gòu)之歸并排序的實(shí)例詳解的相關(guān)資料,這里對歸并排序進(jìn)行詳細(xì)介紹,需要的朋友可以參考下2017-08-08