学用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;
}