“数组最大值求和2”分析报告

“数组最大值求和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;
            
}

 

四、结果截图

技术分享技术分享

五、总结

       当程序出现问题的时候一定要做好分析,有可能是哪方面出了问题,列一个可能出现问题的表出来。然后再针对每次的问题进行分析,分析如果真的是这方面出了问题,该怎么确定以及确定后该如何解决。 这次是第一次结组做程序,两个人想的确实比一个人想的要全面。分工明确也非常重要,一个人负责程序的编写,一个人负责代码的测试。在以后的编写程序的过程中,会注重两个人的交流和配合。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。