软件工程第二次作业

博客信息 沈阳航空航天大学计算机学院2020软件工程作业
作业要求 https://edu.cnblogs.com/campus/sau/Computer1701-1705/homework/10583
课程目标 熟悉一个“高质量”软件的开发过程
作业目标 单元测试练习

    问题:最大连续子数组和(最大子段和)

                给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。当所给的整数均为负数时定义子段和为0,依此定义,所求的最优值为: Max{0,a[i]+a[i+1]+…+a[j]},1<=i<=j<=n。例如,当(a[1],a[2],a[3],a[4],a[5],a[6])=(-2,11,-4,13,-5,-2)时,最大子段和为20。

  要求 

(1) 要求写出可运行的完整代码提交至GitHub系统中,并将代码地址附到博客内;

(2) 请从语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖五个覆盖标准中(条件组合覆盖难度较大,鼓励尝试,但请谨慎选择),任选一个标准设计测试用例

(3) 请利用自动测试工具对程序进行测试

(4) 请将程序运行结果和自动测试分析结果截图附到博客中

  思路:

首先,输入整数n,此时注意若n为负数则显示警告信息;若n为0则将最大连续子数组和内定为0;若n为正数,则将随后的n个元素写入链表。

其次,从第一个元素开始,将随后的元素逐个相加,每次相加的结果后与一个变量(max1)比较大小,保证max1为最大值。第一轮结束后将max1与另一个变量max比较大小,令max为最大值。然后从第二个元素开始,重复上一个操作;从第三个元素开始,重复上一次操作···直到最后得到最大连续子数组和。

最后,根据要求,若所有的整数均为负数,这定义字段和为0。因此将max与0比较大小,最终得到连续子数组最大值。

  流程图:

软件工程第二次作业_第1张图片

  代码:

查看代码请点击:求连续子数组的最大值

  程序运行结果:

1.n为负数:输出错误信息

软件工程第二次作业_第2张图片

 2.n为0:直接输出最大连续子数组和为0

软件工程第二次作业_第3张图片

 3.n为正数且输入不全为负数:输出最大连续子数组和

软件工程第二次作业_第4张图片

 4.n为正数且输入全为负数:输出0

软件工程第二次作业_第5张图片

  判定/条件覆盖:

软件工程第二次作业_第6张图片

 

编号 取值 通过路径
1 n=-1 p1
2 n=0 p2,p3
3 n=3   a[3]={-1,-2,-3} p2,p4,p5
4 n=5   a[5]={1,2,3,4,5} p2,p4,p6
5 n=-3   a[3]={1, 2, 3} p1
6 n=5   a[5]={-1,-2,-3,-4,0} p2,p4,p6

 

  测试工具:

选择Visual Studio 2019自带的测试资源管理器。

  测试截图:

软件工程第二次作业_第7张图片

  PSP0工作记录表:

项目 记录结果
开始日期 2020.4.7 
开始时间 21:31 
结束日期  2020.4.8
结束时间  18:23
编码行数 73 
错误数量  2
错误1 没有考虑n=0的情况 
错误1修改时间 1min 
错误2 越界报错
错误2修改时间

5min

你可能感兴趣的:(软件工程第二次作业)