2 baidu 29472129 baidu_29472129 于 2015.07.03 11:08 提问

用VETOR进行词频统计及排序,统计做出来了,排序怎么搞,代码如下。 9C

#include #include #include using namespace std;typedef struct WORD_FREQ{ string strword; int freq;}WF;class CWordProcess {public: void OutPut(); void PushVector(string word); void Split(char pstr,char *pword); void ProcessFile(); CWordProcess(string filesrc,string filedest); virtual ~CWordProcess();private: vector m_vector; string FileDestPath; string FileSrcPath; FILE *fr; FILE *fw;};CWordProcess::CWordProcess(string filesrc,string filedest){ FileSrcPath=filesrc; FileDestPath=filedest;}CWordProcess::~CWordProcess(){ fclose(fw); fclose(fr);}void CWordProcess::ProcessFile(){ fr=fopen(FileSrcPath.c_str(),"r"); fw=fopen(FileDestPath.c_str(),"w"); char szBuf[200]={'\0'}; char szWord[200]={'\0'}; while(!feof(fr)) { fscanf(fr,"%s",szBuf); Split(szBuf,szWord); printf("%s",szWord); PushVector(szWord); } OutPut(); }void CWordProcess::Split(char *pstr, char *pword){ char *p=pstr; char *p1=strchr(p,'/'); if(p1!=NULL) { *p1='\0'; strcpy(pword,p); }}void CWordProcess::PushVector(string word){ WF wf; vector::iterator iter; for(iter=m_vector.begin();iter!=m_vector.end();iter++) { wf=(WF)*iter; if(wf.strword==word) { wf.freq++; *iter=wf; return; } } wf.strword=word; wf.freq=1; m_vector.push_back(wf);}void CWordProcess::OutPut(){ WF wf; vector::iterator iter; for(iter=m_vector.begin();iter!=m_vector.end();iter++) { wf=*iter; fprintf(fw,"%s ",wf.strword.c_str()); fprintf(fw,"%d",wf.freq); fprintf(fw,"\n"); }}#include "stdafx.h"#include "WordProcess.h"int main(int argc, char argv[]){ string strfilesrc="d:\199801.txt"; string strfiledest="d:\result.txt"; CWordProcess f(strfilesrc,strfiledest); f.ProcessFile(); printf("Hello World!\n"); return 0;}

1个回答

oyljerry
oyljerry   Ds   Rxr 2015.07.03 22:22

排序可以用std::sort
然后定义自己的比较函数

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Java 进行词频统计,并按单词顺序顺序排序
本文针对以前一篇的博客 java进行文本单词的词频统计 进行补充,在统计文本词频之后,又对map按key值进行排序,即按单词顺序排序。 package com.cute.test; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.util.Ar
大数据之使用hadoop对海量数据进行统计并排序
不得不说,Hadoop确实是处理海量离线数据的利器,当然,凡是一个东西有优点必定也有缺点,hadoop的缺点也很多,比如对流式计 算,实时计算,DAG具有依赖关系的计算,支持都不友好,所以,由此诞生了很多新的分布式计算框 架,Storm,Spark,Tez,impala,drill,等等,他们都是针对特定问题提出一种解决方案,新框架的的兴起,并不意味者他们就可以替 代hadoop,一手独大,HDF
spark【例子】单词计算(wordcount) 词频排序(TopK)
记录自己在学完scala和spark基础后,实际中练习中写的各种例子。
c语言 词频统计
c语言没有向量可以存储单词信息,需要自己定义数据结构,此处方便用了结构体数组,因为无法确定单词数量,所以申请的空间很大,也可以用链表做,但是链表查找较为繁琐,时间上较慢。 #include #include #include #include //词频统计 //存储单词用结构体 typedef struct node{ char word[26];//一个单词 int count;//出
统计英文单词词频(c版)
统计英文单词词频–C思想:c和java有很大的区别,如果是c要进行字符串这类问题处理的话,是更多的算法,而java的话可以有很多类来帮助我们减少如何设计算法。所以硬是要用c的话应该这样,首先定义一个结构体,然后两个元素,一个是单词,一个是单词的频数,接下来就是读文件,读文件自然是按字符读,如果读的不是英文字符自动跳过,如果读的是英文字母的话可以记录一下起点,然后当读到空白或者标点之类的可以记录一下终
使用python对中文文档进行词频统计
对中文文档进行词汇统计 1、使用jieba先对中文文档进行分词处理 需要处理的clean_data.csv文件内容(三列) http://you.ctrip.com/travels/1322/1360550.html   地中海邮轮+罗马深度自由行      宅猫行天下      http://you.ctrip.com/travels/1400/1600356.html  柏林&
Java实现词频统计(Wordcount)-Map或Hashtable的value排序
我们在文本操作时,经常需要用到词频统计,并对统计后的词频进行排序,然后输出。 以下是我写的一个供大家参考:import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream;
hadoop中文分词、词频统计及排序
有如图所示的输入文件。其中第一列代表ip地址,之后的偶数列代表搜索词,数字(奇数列)代表搜索次数,使用"\t"分隔。现在需要对搜索词进行分词并统计词频,此处不考虑搜索次数,可能是翻页,亦不考虑搜索链接的行为。
词频统计的C++实现(使用stl--map)
<br />#include <map> #include <fstream> #include <iostream> #include <string> using namespace std; void display_map(map<string, int> &wmap); int main() { const char *szInputFileName="Text.txt"; ifstream ifs(szInp
结巴分词词频统计排序
import jieba import numpy as np import pandas as pd data=open("D:/data.txt").readlines() def processs(data): m1=map(lambda s:s.strip("\n"),data) cut_words=map(lambda s:list(jieba.cut(s)),m1)