第三周 词频统计
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第三周 词频统计相关的知识,希望对你有一定的参考价值。
HTTP:https:https://git.coding.net/liqiao085/wf--week2.git
ssh://[email protected]:liqiao085/wf--week2.git
功能1:
void f1()//完成自己输入文章统计功能
{
int sum = 0;
gets(str);
// printf("%s\\n",str);
int len = strlen(str);//文章长度
for(int i = 0;i<len;i++)
{
if(str[i]>=‘A‘&&str[i]<=‘Z‘) str[i]+=32;//大写变小写
}
for(int i = 0;i<len;i++)
{
if(str[i]>=‘a‘&&str[i]<=‘z‘)
{
sum++;
char s[200],flag = 0;
for(;i<len;i++)
{
if(str[i]<‘a‘||str[i]>‘z‘) break;
s[flag++] = str[i];
}
s[flag] = 0;
insert_tree(s);//插入字典树中
}
}
pri();
}
void pri(int len)//打印前len个单词
{
tot_word = 0;
dfs(0,0);
printf("total %d words\\n",tot_word);
qsort(ss,f,sizeof(ss[0]),cam);//对单词排序
for(int i = 0;i<min(len,f);i++)
{
cout<<ss[i].str;
for(int j = 1;j<=25-ss[i].str.length();j++) printf(" ");
cout<<ss[i].flag<<endl;
}
}
void gao()//完成了重定向功能
{
// printf("1111\\n");
char str[50];
while(scanf("%s",str)!=EOF)//循环读取知道文件末尾
{
//printf("%s\\n",str);
int len = strlen(str);
for(int i = 0;i<len;i++)
{
if(str[i]>=‘A‘&&str[i]<=‘Z‘) str[i]+=32;
}
insert_tree(str);//插入字典树中
}
pri();//打印单词以及个数
}
功能4:
void gao()//完成了重定向功能
{
// printf("1111\\n");
char str[50];
while(scanf("%s",str)!=EOF)//循环读取知道文件末尾
{
//printf("%s\\n",str);
int len = strlen(str);
for(int i = 0;i<len;i++)
{
if(str[i]>=‘A‘&&str[i]<=‘Z‘) str[i]+=32;
}
insert_tree(str);//插入字典树中
}
pri();//打印单词以及个数
}
功能3:
void f2(char *p,int flag)
{
// printf("%s\\n",p);
//printf("1111\\n");
struct stat st;
stat(p,&st);
if (S_ISDIR(st.st_mode))
{
// printf("1111\\n");
f2_dir(p);
return;
}
int sum = 0;
freopen(p, "r", stdin);//打开文件
while(scanf("%s",str)!=EOF)
{
sum++;
int len = strlen(str);
for(int i = 0;i<len;i++)
{
if(str[i]>=‘A‘&&str[i]<=‘Z‘) str[i]+=32;//大写转小写
}
insert_tree(str);//插入字典树中
}
if(flag==0) pri();
else pri(flag);//打印前flag个单词
return;
}
void f2_dir(char *p)
{
readdir(p);//读取目录
for(int i= 0;i<ve.size();i++)
{
f = 0;
cnt = -1;
new_tree();//建立一个新的字典树节点
// cout<<ve[i]<<endl;
char se[150];
for(int j = 0;j<ve[i].length();j++)//循环目录长度
{
se[j] = ve[i][j];
}
se[ve[i].length()] = 0;
//printf("%s\\n",se);
f2(se,10);
printf("____________________");
}
}
功能2:
void f2(char *p,int flag)
{
// printf("%s\\n",p);
//printf("1111\\n");
struct stat st;
stat(p,&st);
if (S_ISDIR(st.st_mode))
{
// printf("1111\\n");
f2_dir(p);
return;
}
int sum = 0;
freopen(p, "r", stdin);//打开文件
while(scanf("%s",str)!=EOF)
{
sum++;
int len = strlen(str);
for(int i = 0;i<len;i++)
{
if(str[i]>=‘A‘&&str[i]<=‘Z‘) str[i]+=32;//大写转小写
}
insert_tree(str);//插入字典树中
}
if(flag==0) pri();
else pri(flag);//打印前flag个单词
return;
}
以上是关于第三周 词频统计的主要内容,如果未能解决你的问题,请参考以下文章