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

mac2022-07-05  37

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

转载于:https://www.cnblogs.com/czdx59/p/9697230.html

最新回复(0)