« 跨平台的录屏软件vnc2swf | 首页 | 中秋&短信 »

学用cpp完成文章中单词出现频率的计数

好久不写代码感觉自己都笨死了,是帮朋友作的一个小作业,放在自己的log里作个纪念吧。静下心来学习cpp和stl都是两年前的事情了。翻了好一会书才写出来的。看来自己真的是老了。

这个东西读取aaa.txt一篇英文文档,计算每个单词出现的次数。按频率由高至低打印出来。算法比较笨。

g++ (GCC) 3.3.6 slackware linux 10.2下通过。因为html转义的问题,提供cpp文件下载 下载

#include <iostream> #include <fstream> #include <string> #include <map> #include <algorithm> #include <ctype.h> using namespace std; int main() { map <string, int>words; int sum=0; ifstream infile("aaa.txt"); if(!infile) { cout <<"Can't find the input file aaa.txt"; return 1; } else { string tword; while(infile>>tword) { string word; for(string::const_iterator it=tword.begin();it!=tword.end();it++) { if(!ispunct(*it)) { word+=*it; } } if(word.size()!=0) { words[word]++; sum++; } } } map<string, int>::iterator it=words.begin(); int max=0; for(;it!=words.end();++it) { if(it->second>max) max=it->second; } for(int i=max;i>=1;i--)
{ for(it=words.begin();it!=words.end();++it)
{ if(it->second==i) cout <<"Word: " <<it->first <<" appears: " <<it->second <<" times." <<endl; } } cout << "Total: " << sum << "\n"; return 0; }


引用:

本篇引用地址:
http://www.vetcafe.net/cgi-bin/mt3/mt-tb.cgi/2535

发表评论

(如果您以前没在这里发表过评论,也许您发表的评论需要Blog主人的审核才能显示在这里,感谢您的静候。)