第二次作业:对程序设计语言源文件统计字符数、单词数、行数

一、码云地址: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出现问题。代码以及思路还是比较清晰,但是还有软件测试过程任然不够完善,暂时只有六个测试用例。我也明白,想完成一件事十分容易,但想将它做好需要付出巨大的努力,还需认真学习,从他人身上汲取经验。

posted @ 2018-09-24 23:05  CZDX  阅读(352)  评论(0编辑  收藏  举报