对wordcount单词字母部分的修改

Posted 哈哈

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对wordcount单词字母部分的修改相关的知识,希望对你有一定的参考价值。

原始代码:

	int s;
	s = ch;
	switch (s)
	{
	case ‘a‘:letter[0]++; break;
	case ‘b‘:letter[1]++; break;
	case ‘c‘:letter[2]++; break;
	case ‘d‘:letter[3]++; break;
	case ‘e‘:letter[4]++; break;
	case ‘f‘:letter[5]++; break;
	case ‘g‘:letter[6]++; break;
	case ‘h‘:letter[7]++; break;
	case ‘i‘:letter[8]++; break;
	case ‘j‘:letter[9]++; break;
	case ‘k‘:letter[10]++; break;
	case ‘l‘:letter[11]++; break;
	case ‘m‘:letter[12]++; break;
	case ‘n‘:letter[13]++; break;
	case ‘o‘:letter[14]++; break;
	case ‘p‘:letter[15]++; break;
	case ‘q‘:letter[16]++; break;
	case ‘r‘:letter[17]++; break;
	case ‘s‘:letter[18]++; break;
	case ‘t‘:letter[19]++; break;
	case ‘u‘:letter[20]++; break;
	case ‘v‘:letter[21]++; break;
	case ‘w‘:letter[22]++; break;
	case ‘x‘:letter[23]++; break;
	case ‘y‘:letter[24]++; break;
	case ‘z‘:letter[25]++; break;
	case ‘A‘:letter[0]++; break;
	case ‘B‘:letter[1]++; break;
	case ‘C‘:letter[2]++; break;
	case ‘D‘:letter[3]++; break;
	case ‘E‘:letter[4]++; break;
	case ‘F‘:letter[5]++; break;
	case ‘G‘:letter[6]++; break;
	case ‘H‘:letter[7]++; break;
	case ‘I‘:letter[8]++; break;
	case ‘J‘:letter[9]++; break;
	case ‘K‘:letter[10]++; break;
	case ‘L‘:letter[11]++; break;
	case ‘M‘:letter[12]++; break;
	case ‘N‘:letter[13]++; break;
	case ‘O‘:letter[14]++; break;
	case ‘P‘:letter[15]++; break;
	case ‘Q‘:letter[16]++; break;
	case ‘R‘:letter[17]++; break;
	case ‘S‘:letter[18]++; break;
	case ‘T‘:letter[19]++; break;
	case ‘U‘:letter[20]++; break;
	case ‘V‘:letter[21]++; break;
	case ‘W‘:letter[22]++; break;
	case ‘X‘:letter[23]++; break;
	case ‘Y‘:letter[24]++; break;
	case ‘Z‘:letter[25]++; break;
	}

 开始写时,也觉得这样的表述不够简洁。但由于当时写了好长时间的代码,思路也不是很清晰,就用这种相对来说比较笨的方法。事后也忘记来修改更新这一部分。

以下是更改后的代码:

int j;
	char i;
	for (i = ‘a‘, j = 0; i <= ‘z‘; i++, j++)
	{
		if (ch == i)
		{
			letter[j]++;
			break;
		}
	}
	for (i = ‘A‘, j = 0; i <= ‘z‘; i++, j++)
	{
		if (ch == i)
		{
			letter[j]++;
			break;
		}
	}

 使用的是ASCILL码来控制。char型变量i从a开始一直加到z,用来比较字符是否相等。int型变量j从0开始,用来控制对应的数组下标。

文件输入的路径可能会很长,而我之间数组大小设为20,这是远远不够的,我也对此做出了修改

char filename[50];

 长度改为50。

新增加模块:字符的分类统计,把字母和符号分开来统计计数。新增函数void Sort(char ch);代码如下:

void Sort(char ch)
{
	if ((ch >= ‘a‘ && ch <= ‘z‘) || (ch >= ‘A‘ && ch <= ‘Z‘))
	{
		chnum++;
		return;
	}
	else
		signum++;
}

 chnum用来记录字母的数量,signum用来记录符号的数量。初值都为0。

以上就是我对wordcount的修改,其中还是存在很多的不足,希望大家多提宝贵意见。特别要感谢邹欣老师阅读我的博客,并且提出宝贵的意见。让我能使我的程序更加优化。

以上是关于对wordcount单词字母部分的修改的主要内容,如果未能解决你的问题,请参考以下文章

用Python编写WordCount程序任务

Hadoop- Wordcount程序原理及代码实现

理解MapReduce

理解MapReduce计算构架

理解MapReduce计算构架

理解MapReduce