//三十四、单词频率统计系统 给定指定单词,统计其在选定文本文件中的出现频率
#include <fstream>
#include <string>
#include <iostream>
using namespace std;
class word//申明用于存放纯单词的类
{
private:
char words[50];
double num;//用于单词的序数,该单词是第几个,第一个单词是文本中单词的总数
word *next;
public:
word()//构造函数初始化类
{
for(int i=0; i<50; i++)
{
words[i]='\0';
}
num=0;
next=NULL;
}
~word()//析构函数
{cout<<"Destructor called."<<endl;}
friend void frequencydisplay(word*);//用于显示每个单词的频率
friend word *openfile();//打开已有文本,并可以显示里面有多少个单词
friend void searchword(word *p_);//查找指定单词
void remove_punctuation();//用于去标点的函数(方便查找单词)
};
void word::remove_punctuation()//用于去掉标点符号的成员函数
{
char array[50];
for(int i=0; i<50; i++)
{
switch(words[i])//调用私有成员words
{
case',':words[i]='^';break;
case'.':words[i]='^';break;
case'?':words[i]='^';break;
case'!':words[i]='^';break;
}
}//如果单词后面跟着标点符号,标记
for(int i=0, j=0; i<50; i++)
{
if(words[i]!='^')
{
array[j]=words[i];
j++;
}
}//去掉符号,只进行纯单词的比较
strcpy(words, array);//重新赋值给数据成员words
}
int main()
{
word *head_;
head_=openfile();
searchword(head_);