题目要求:
要求统计一篇英文文章中的所有单词出现的次数,按照这些单词出现的顺序依次打印它们以及各自出现的次数。
本人已写出能实现统计的代码,但目前仍有一些无法解决:
1.如何不统计比如“word,”后面的“,”使之不被统计为“word,”而是“word”。
2.如何使如“word,and”不被统计为“word,and”而是当有“,”号时如我代码中空格进行跳过。正确被统计应该为“word”与“and”。
3.不只是“,”其他常用英文符号如“。”“!”“ ' ”“?”“...”等等做到如上要求。
4.求对修改的地方进行注释十分感谢!!!十分感谢求大神支援!!
代码:
#include <iostream>
#include <string.h>
#define X 1000
#define Y 45
using namespace std;
int main()
{
char str1[X][Y];
char str2[X];
int str3[X];
int i=0,j=0,k=0,t=0,x=0;
cout<<"请输入英文语句:"<<endl;
gets(str2);
t=strlen(str2)+1;
cout<<"---------------"<<endl<<"你输入的语句为:"<<endl<<"---------------"<<endl<<str2<<endl<<"---------------"<<endl;
while(j<t)
{
for(;str2[j]==32;j++);
while(k<Y&&str2[j]!=32)
str1[i][k++]=str2[j++];
str1[i][k]='\0';
str3[i]=1;
for(x=0;x<i;x++)
if(strncmp(str1[i],str1[x],Y)==0)
{
str3[x]++;
i--;
break;
}
i++;
k=0;
}
cout<<"统计结果为:"<<endl;
t=0;
for(;t<i;t++)
cout<<str1[t]<<"总共有 "<<str3[t]<<" 个"<<endl;
}