碎阅创造营——团队编程

github 的链接

一、模块设计

  • 1.处理命令行输入
  • 2.统计字符数
  • 3.统计单词数
  • 4.统计有效行数
  • 5.统计词频
  • 6.输出词组的大小写判断和转换
  • 7.写入统计结果
  • 8.Github部分

1、处理命令行输入

int main(int argc, char* argv[])
{
	string inputname;                //命令行输入处理 
	string outputname;
	string a, b, c, d;
	a = "-m";
	b = "-n";
	c = "-i";
	d = "-o";
	for (int i = 1; i < argc; i++)
	{
		if (argv[i] == c)
		{
			fp = fopen(argv[++i], "r");     //以文本方式打开文件。
			if (fp == NULL)               //打开文件出错
			{
				cout << "Input not found.\n" << endl;
				return 0;
			}
			continue;
		}
		if (argv[i] == d)
		{
			fq = fopen(argv[++i], "w");     //以文本方式打开文件。
			if (fq == NULL)               //打开文件出错
			{
				cout << "Output not found.\n" << endl;
				return 0;
			}
			continue;
		}

	}
	 int totalNum[3] = {0, 0, 0};

   	if(fq==NULL)
	{
		cout<<"Output not found.\n"<<endl;
		return 0;
	}
}

2、统计文件的字符数、单词总数、文件的有效行数

  • 数组buffer[],用来存储读每行的内容
  • bufferLen,存储内容的长度
  • charNum,当前行的字符数
  • wordNum,当前行的单词数
  • totalNum[0],总行数
  • totalNum[1],总字符数
  • totalNum[2],总单词数

主要思路:每读入一行有效内容,总行数 totalNum[0](初值为0)对应+1。每一行统计结束后,将当前行的字符数、当前行的单词数对应加到总字符数totalNum[1]、总单词数totalNum[2],得到到当前行为止的总字符数、总单词数,再将当前行的字符数charNum、当前行的单词数wordNum重新置为0,为下一行统计做准备。

int *getCharNum(int *totalNum){
    char buffer[1003];  //缓冲区,存储读取到的每行的内容
    int bufferLen;  // 缓冲区中实际存储的内容的长度
    int i;  // 当前读到缓冲区的第i个字符
    char c;  // 读取到的字符
    int isLastBlank = 0;  // 上个字符是否是空格
    int charNum = 0;  // 当前行的字符数
    int wordNum = 0; // 当前行的单词数

    printf("\n");
    // 每次读取一行数据,保存到buffer,每行最多只能有1000个字符
    while(fgets(buffer, 1003, fp) != NULL){
        bufferLen = strlen(buffer);
        // 遍历缓冲区的内容
        for(i=0; i<bufferLen; i++){
            c = buffer[i];
            if( c==' ' || c=='\t'){  // 遇到空格
                !isLastBlank && wordNum++;  // 如果上个字符不是空格,那么单词数加1
                isLastBlank = 1;
            }else if(c!='\n'&&c!='\r'){  // 忽略换行符
                charNum++;  // 如果既不是换行符也不是空格,字符数加1
                isLastBlank = 0;
            }
        }

        !isLastBlank && wordNum++;  // 如果最后一个字符不是空格,那么单词数加1
        isLastBlank = 1;  // 每次换行重置为1

        // 一行结束,计算总字符数、总单词数、总行数
        totalNum[0]++;  // 总行数
        totalNum[1] += charNum;  // 总字符数
        totalNum[2] += wordNum;  // 总单词数

       // printf("%-7d%-7d%d\n", totalNum[0], wordNum, charNum);

        // 置零,重新统计下一行
        charNum = 0;
        wordNum = 0;
    }
    return totalNum;
}

二、组员职责分工

成员 负责内容
卢昱妃 输入输出+统计字符数、单词总数、有效行数+Github部分
蓝飞鹏 Github部分
苏杰隆 分工+Github部分
黄淑云 博客部分
林震 输入+统计词组及词频部分
陈毅东 统计词组及词频部分
林涛 统计词组及词频部分
刘新耀 统计词组及词频部分

三、程序运行截图

四、提交日志截图

附上团队讨论现场图(感谢张栋老师现场拍摄):

posted @ 2019-10-19 11:26  碎阅创造营  阅读(352)  评论(0编辑  收藏  举报