实现一个控制台程序,给定一段英文字符串,统计其中各个英文单词(4字符以上含4字符)的出现频率。

#include <iostream>
#include <cstring>
#include <fstream>
using namespace std;

void func(char a[][100]);
int main()
{
char a[100][100] = { 0 };
func(a);
char temp[100][100] = { 0 };
int count[100] = { 0 };
strcpy(temp[0], a[0]);
int num = 1;
for (
int j = 0; *a[j]; j++
)
{
for (
int i = 0; *temp[i]; i++
)
{
if (
!strcmp(temp[i], a[j]
)
)
{
count[i]++;
}
else if(
i == num - 1
)
{
strcpy(temp[num++], a[j]
);
}
}
}
for (
int i = 0; i < num - 1; i++
)
{
cout << temp[i] << ":" << '\t' << count[i] << endl;
}
return 0;
}

 

void func(char a[][100]) {
char buff[100];
ifstream in("E:\\test3.txt");
int j = 0;
char ch;
if (in) {
in >> noskipws;
while (in >> ch) {
int i = 0;
if (ch >= 'A' && ch <= 'Z' || ch >= 'a' && ch <= 'z') {
buff[i++] = ch;
}
else {
continue;
}
while (in >> ch && ch >= 'A' && ch <= 'Z' || ch >= 'a' && ch <= 'z' || ch >= '0' && ch <= '9') {
buff[i++] = ch;
}
buff[i] = '\0';
if (strlen(buff) >= 4) {
strcpy(a[j++], strlwr(buff));
}
}

in.close();
}
}

 

 

运行结果:file:3
              word:2
              case:1
              same:1
              considered:1
              insensitive:1

测试完毕程序无误。

 

原本想使用myeckipse用java写的,但还是不太会,只好用c++写了。此次作业一写,感觉自己还有很多的知识仍然需要去学习。

 

posted on 2016-03-16 14:43  蒋易  阅读(837)  评论(3编辑  收藏  举报