• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
陈小喵
博客园    首页    新随笔    联系   管理    订阅  订阅
“数组最大值求和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;
            
}

 

四、结果截图

五、总结

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

posted on 2015-04-01 13:17  陈小喵  阅读(139)  评论(1)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3