“数组最大值求和2”分析报告
一、设计思想
1.定义一个数组元素个数可变的数组,用宏定义实现(a[n])。
2.用rand函数产生正负随机数,存入数组中。
3.定义一个二维数组(b[n][n]),用来依次存放各个子数组的值。
4.找出二维数组中最大的值,就是最大的子数组的值。
5.二维数组中的最大值的下标,就分别是最大子数组的起始下标和结束下标,比如b[2][4]是二维数组中最大的值,即最大子数组的下标就是2、3、4。
二、开发过程(结组开发)
我主要负责程序分析,代码编程,之前的程序能够处理的元素个数最多是五百个,离一千还差一半,如果按一千运行则程序会报错。我主要分析了一下两个方面:
1.程序结果超出int的范围因此报错
2.和二维数组的元素个数有关系
针对第一个方面,我让随机数在一个固定的小范围中产生,结果还是报错,因此不是第一个问题。针对第二个问题,我把二维数组换成了一维数组,让这个一维数组依次存放每个子数组的和,后运行成功。因此应该是二维数组这方面出了问题。
三、程序代码
#include<iostream> #include<time.h> #define n 127293 using namespace std; void main() { int a[n],i,w=0,b[n]; srand((int)time(0)); for(i=0;i<n;i++) a[i]=-rand()%36+25; for(i=0;i<n;i++) cout<<a[i]<<endl; for(i=0;i<n;i++) { w+=a[i]; b[i]=w; } int t=b[0]; for(i=0;i<n;i++) { if(b[i]>t) t=b[i]; } cout<<"最大子数组的值为:"<<t<<endl; }
四、结果截图
五、总结
当程序出现问题的时候一定要做好分析,有可能是哪方面出了问题,列一个可能出现问题的表出来。然后再针对每次的问题进行分析,分析如果真的是这方面出了问题,该怎么确定以及确定后该如何解决。 这次是第一次结组做程序,两个人想的确实比一个人想的要全面。分工明确也非常重要,一个人负责程序的编写,一个人负责代码的测试。在以后的编写程序的过程中,会注重两个人的交流和配合。