第二次作业:对程序设计语言源文件统计字符数、单词数、行数
一、码云地址:https://gitee.com/czdx
二、设计思路:由于目前只对C语言掌握较好,于是便运用C++开始编写。先读取文件,再统计字符数、单词数以及行数。
统计单词数关键是判断中间停顿符,而行数统计则是/n的辨别,统计字符数时需要区别/n外加所有字符。
三、共实现了三个函数的编写
统计字符数函数Letter
int Letter(char c)
{
      if((c<'0'||c>'9')&&c!='\n')
      return 1;
      else
      return 0;
}
统计单词数函数Word
int Word(char c,int &w)
{
    if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
    {
      w++;
      if(w==1)
      return 1;
      else
      return 0;
    }
    else 
    {
    if(w>0)
       w=0;
    return 0;
    }
}
和统计行数函数Row
int Row(char c,int &r)
{
      if(c=='\n')
    {
      r++;
      if(r==1)
      return 1;
      else
      return 0;
    }
    else 
    {
      if(r>0)
         r=0;
      return 0;
    }
}
获取文件通过函数getline
主函数
int main ()
{
ifsteam in;//读文件
	string filename;
	gteline(cin,filename,'\n');//获取文件名
	cin>>filename;
	in.open(filename,'\n');
	if(!in)//判断是否打开成功
	{
		cerr<<"打开文件出错!"<<endl;
		return 1;
	}
int totalrow=0,totalword=0,totalletter=0;//初始化总行数 ,单词数 ,字符数 
int r=0,w=0;//行连续出现次数 ,英文字符连续出现次数
char c;
while(r<2)//如果不是空行则循环 
{
c=getchar();
totalrow+=Row(c,r);
totalword+=Word(c,w);
totalletter+=Letter(c); 
}
printf("单词数:%d\n",totalword);
printf("字符数:%d",totalletter);
printf("总行数:%d\n",totalrow);
return 0;
}
四、测试用例设计
运用白盒设计技术
1、
If you were a teardrop;In my eye,
For fear of losing you,I would never cry.

2、
mistakeaikeyouforever

3、苦其心志,劳其筋骨。

4、

5、。。。。,,,,,,。。

6、556652241

测试用例主要通过判断条件覆盖测试方法进行测试。
五、心得与体会
本次作业主要是对我们学习的基础考察,做这个作业时,我以为十分简单,很快就把几个判别的函数写了出来,但是在读取文件时出现了些许差错,我读取的文件名中间不能有空格键,但是找不到什么好的解决办法,应该是在读取文件名cin>>filename出现问题。代码以及思路还是比较清晰,但是还有软件测试过程任然不够完善,暂时只有六个测试用例。我也明白,想完成一件事十分容易,但想将它做好需要付出巨大的努力,还需认真学习,从他人身上汲取经验。
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号