第四次软工基础做业

git地址  https://github.com/npcccc1/WordCount
伙伴 徐睿201831061409
伙伴博客  https://www.cnblogs.com/codingbyjusticexu/

 

 

 

 

1、PSP表格

 

 2、代码实现

  和伙伴选择了不一样的语言来完成这项工做(c与c++),因此用了两个仓库放不一样的项目。因为并不在一个寝室,具体的代码是每人本身敲的。过后的测试、代码规范与调整则在商讨以后进一步完善。html

int main()                                                      //简单的主函数先放上
{                                                               
	FILE *fpa;
	FILE *fpb;
	if ((fpa = fopen("D:\\wordCount.txt", "r")) == NULL)
	{
		printf("Failure to open wordCount.txt!\n");
		exit(0);
	}
	if ((fpb = fopen("D:\\Countresult.txt", "w")) == NULL)
	{
		printf("Failure to open wordCount.txt!\n");
		exit(0);
	}
	countchar(fpa,fpb);
	wordcount(fpa,fpb);
	fclose(fpa);
	fclose(fpb);
	return 0;
}

  

  

     void countchar(FILE *a,FILE *b)                    //统计字符函数
	{                                                  //ps:一开始想成了输出a到z 26个字母的个数...  
		char c;
		int  d=0;
		int  i=0;
		int  p=0;
		int  q=0;
		while(!feof(a))
		{
			c=fgetc(a);
			if(c>=48&&c<=57)
			{
				d++;
			}	
			else if(c>=65&&c<=90)
			{
				i++;
			}
			else if(c>=97&&c<=122)
			{
				p++;
			}
			else 
			{
				q++;
			}		
		}
		rewind(a);
		fprintf(b,"0--9\t%d\nA--Z\t%d\na--z\t%d\nSeparator\t%d\n",d,i,p,q);
	}

  

  

	void wordcount(FILE *a,FILE *b)
	{
		int  i;
		int  q=0;
		char str[N][N];
		while(!feof(a))
		{
			for(i=0;;i++)
			{
				int p=0;
				fgets(str[i],N,a);
				
				if((str[i][p]>=97&&str[i][p]<=122)||(str[i][p]>=65&&str[i][p]<=90))
				
				{
					loop:p++;                        //按理说不该该加goto实在不想再用循环了
					
					while((str[i][p]>=97&&str[i][p]<=122)||(str[i][p]>=65&&str[i][p]<=90))
					{
						p++;                         
					}
					if(p>=4)
					{
					if(str[i][p]>=48&&str[i][p]<=57)
						{
						do
							{
								p++;	
							}
							while(str[i][p]>=48&&str[i][p]<=57);
							q++;
							goto loop;
						}
						q++;
					}
									
				}
				
				fprintf(b,"%d\t",q);				
			}	
		} 

	}

3、代码规范

  经讨论后,规范详见此连接。对照后看了本身的代码发现一个小坏习惯以前没注意的——写函数时老是空出一个制表符,致使在复杂的循环中“{}”每每由于开头的这个Tab而向后缩进,显得前面一大片空白,影响美观。python

  还有即是变量的取名不大规范,每每是本身为所欲为地取。c++

4、代码复审

  与其说是复审,其实更像在写中改。开始编译没什么问题仍是很开心的,但打开文件发现没有打印出任何东西。上一个四则运算也是遇到了这种状况,上次是由于&&与||有一次打错,致使循环卡到了一处没输出任何算式。git

   这是一开始第一次传到github中的代码,循环太多要处理带数字或其余符号的字符串是否是单词,让脑子有点乱,一开始没输出也是这个的缘由。此外也有零零散散的小错误,也是要多看几遍本身就能检查出来。为了效率,也是由于用的不一样的语言不一样的方法,没再让同伴互查。github

5、性能分析

  不知道为何复制过去vs里面说fopen可能不安全,编译不出来测试不出来。安全

6、总结与反思

  对c语言的面向过程深有了感触,再加上本身没有细分模块与函数致使出错多、效率低下,感受仍是c++封装及模块的划分比c语言简单。可是结对确实是提供了思路即便咱们交流代码不大详细,每每在qq上交流一些问题和进度及本身的思路,能够明显感到1+1>2,ide

相关文章
相关标签/搜索