结对开发-- 一维数组求和最大的子数组 (大数溢出)

本文详细介绍了如何在C++程序中改进数组处理,扩大数组范围至1000,并通过添加判断语句防止大数溢出。程序随机生成1000个长整型随机数,并求取子数组和的最大值。同时,通过截图展示了程序运行效果,最终心得总结了关键问题和解决方案。

一、设计思路

1.在原先的程序上修改实现,扩展数组范围至1000,改变数组的类型。

2.通过添加判断,防止大大数溢出。

二、源代码

//作者:王炳午  董龙洋  日期:2015.3.28
#include<iostream.h>
#include<stdlib.h>
#include<time.h>
int main()
{
	cout<<"---------------------求数组中子数组和的最大值的小程序----------------------"<<endl;
	cout<<endl;
	signed long int a[1000];
	int i;
	int j;
	srand( (unsigned)time( NULL ) );//随机数种子为当前计算机时间。
	cout<<"得到的一组随机整数(1000个数)如下:"<<endl;
	/*a[0]=2147483647;
	cout<<a[0]<<"\t";*/
	for(i=0;i<1000;i++)
	{
	 //随机生成长整型整数
		j=rand()%2;
		if(j==0)
		{
			a[i]=rand()%2147483648;
		}
		else
		{
			a[i]=0-rand()%2147483648;
		}
		cout<<a[i]<<"\t";
	}
	cout<<endl;
	int sum=0;  
    int GreateSum=0;  
	for ( i=0;i<1000;i++)  
	{  
		//防止最大值溢出
		if(sum>2147483647)
		{
			sum=2147483647;
		}
		sum+=a[i];  
        if (sum<0)  
		{  
			sum=0;  
		}  
		if (sum>GreateSum)  
		{  
			GreateSum=sum;  
		}
		//防止最大值溢出
		if(GreateSum>2147483647)
		{
			GreateSum=2147483647;

		}
	}  
	if (GreateSum==0)  
	{  
		for (int i=0;i<1000;i++)  
		{  
			if (GreateSum==0)  
			{  
				GreateSum=a[i];  
			}  
			else  
			if (GreateSum<a[i])  
			{  
				GreateSum=a[i];  
			}  
		}  
	}  
	cout<<"最大值sum:"<<GreateSum<<endl;  
	system("pause");  
	return 0;  
}  

  三、运行截图

四、心得体会

主要问题是数组类型的改变,以及数组范围调整。代码主要是上次的代码,修改是我俩一起试验解决的。

转载于:https://www.cnblogs.com/dlyxx/p/4377714.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值