一维数组最大数溢出

一、题目及要求:

题目:返回一个整数数组中最大子数组的和。

要求(新加):①要求程序必须能处理1000个元素;②每个元素都是int32类型的。

组员:石鹤 李海超

二   实验思想

定义一个无符号的长整形数组,求子数组最大和,如果大于LONGMAX+1,则溢出

三  实验代码

#include<iostream.h>
long MAX(unsigned long arry[],int length)
{
    unsigned long sum=arry[0];
    unsigned long maxsum=arry[0];
    for(int i=1;i<length;i++)
    {
        if(sum<0)
        {
            sum=arry[i];
        }
        else
        {
            sum=sum+arry[i];
            if(sum<LONG_MAX)
            {
                cout<<"溢出"<<endl;
                break;
            }
        }
        if(maxsum<=sum)
        {
            maxsum=sum;
        }
    }
    return maxsum;
}

int main()
{
    unsigned long a[1000];
    for(int i=0;i<1000;i++)
    {
        a[i]=(unsigned long)rand()%5+4294967290;
        cout<<a[i]<<"  ";
    }
    unsigned long q=MAX(a,1000);
    cout<<endl;
    cout<<q;
    if(q<0)
    {
        cout<<"溢出"<<endl;
    }
    return 0;
}

四 实验截图

五 实验体会

本次实验其实我们不是特别明白,因为一直没考虑过这方面的的事,我一直也对这种内存的问题不太感冒,有些倒不过来,也一直没有头绪,

和宿舍的商量着有了些想法,不过还是不太成熟,关于溢出我们还在讨论好的方法,改进之后会再传上来

时间: 2024-08-01 17:14:20

一维数组最大数溢出的相关文章

一维数组最大数溢出判断

结对人员:张世通 梁世豪 一.题目 题目:求一维数组最大子数组的和 要求:能计算1000以上的数组 二.设计思路 我们最初的实现思路是通过字符串数组实现大数的计算,但是没有实现,原因是在用字符串数组进行加法运算时,进位处理还有字符串和整数的转换做不好,所以我们最后决定不再对大数溢出进行处理,而是直接给出大数溢出的异常提醒,并给出上一个正确的运算结果.虽然没有实现用字符串解决大数溢出的问题,但还是列出部分代码,说明我们的思路 1 void Reset (char n[],int a[]) 2 {

软件工程——一维数组(溢出问题)

一.题目要求 题目:返回一个整数数组中最大子数组的和. 要求: 要求程序必须能处理1000 个元素: 每个元素是int32 类型的: 输入一个整形数组,数组里有正数也有负数. 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 求所有子数组的和的最大值.要求时间复杂度为O(n). 二.设计思路 初看到数值超出表示范围溢出的时候,首先想到的是汇编中的高位.地位, 于是便想到将数值分成高位和低四位,分别用“%”和“/”求出高地位再进行 计算和输出. 三.源代码 //作者:赵建松.张文冬

一维数组求最大子数组(解决溢出问题)

一.题目要求 题目:返回一个整数数组中最大子数组的和. 要求: 要求程序必须能处理1000 个元素: 每个元素是int32 类型的: 输入一个整形数组,数组里有正数也有负数. 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 求所有子数组的和的最大值.要求时间复杂度为O(n). 二.设计思想 程序在宏里面定义出了数组长度的大小,在长度超过100万的时候程序直接崩溃,其实这并不是因为结果太大导致的数值溢出,而是因为内存溢出,我们的数组是定义在程序内部的,属于局部变量,存放位置在栈上

结对开发——一维数组最大子数组判断溢出

一 题目 求一维数组最大子数组和 要求:1000个数以上,整数 二.设计思路 最大子数组很好找到,但是子数组和的溢出问题很难解决. 经过不断的思考,我得出了结论: 溢出是程程序设计者设计时的不足所带来的错误.所以设计者要在编码时便高度警惕,预防溢出的发生,这才是最本质的解决问题的方法.就本题而言,我们设置了元素最大个数,以及其它输入要求,尽量避免溢出的发生.1000个数相加可以实现,但非要取1000个最大的数相加,那样的计算没有意义,不会在我们的生活学习中出现,这属于科研问题,交给大神们来解决吧

结对开发_求一维数组最大子数组和判断溢出

题目 求一维数组最大子数组和 要求:1000个数以上,整数 二.设计思路 最大子数组很好找到,但是子数组和的溢出问题很难解决. 经过不断的思考,我得出了结论: 溢出是程程序设计者设计时的不足所带来的错误.所以设计者要在编码时便高度警惕,预防溢出的发生,这才是最本质的解决问题的方法.就本题而言,我们设置了元素最大个数,以及其它输入要求,尽量避免溢出的发生.1000个数相加可以实现,但非要取1000个最大的数相加,那样的计算没有意义,不会在我们的生活学习中出现,这属于科研问题,交给大神们来解决吧.

求一维数组最大子数组和判断溢出

一题目 一.实验要求 求一维数组最大子数组和 要求:1000个数以上,32位整数 二.设计思路 因为我们的程序一开始就可以运算1000个以上数的运算,最大个数为364,526,269,原因为找出. 这次实验主要目的是解决最大值溢出的问题,本来想输出这个溢出的数值,但没有实现,于是改为若溢出,则输出提示,并返回溢出的上一个最大值. 三.代码 1 // ketang4.cpp : 定义控制台应用程序的入口点. 2 //张世通 梁世豪 3 4 #include "stdafx.h" 5 #i

0108练习一维数组

1.编写java程序,创建一维数组 arr[],并将其遍历输出. int arr[]={55,87,48,10,7}; for(int i=0;i<5;i++){ System.out.println(arr[i]); } 2.编写java程序,创建一维数组 arr[],将数组中最大的数输出. int arr[]={456,882,15560,88596,55,224};int max=arr[0];//建立并初始化数组arr,声明变量max=数组中第0个数 for (int m=0;m<ar

C++:一维数组和二维数组

一维数组:int a[c],其中a是数组名称,c是数组维度,数组维度必须是常量表达式!例如: 1 int c=3; 2 int a[c];//错误!由于c不是常量表达式,所以该定义非法.若将c定义为const int,即c成为一个常量表达式,则可正常编译. 数组的初始化: int a[3]={1,2};//正确!等价于a[3]={1,2,0} int b[3]={1,2,3,4};//错误!初始值过多. int c[]={1,2};//正确!等价于c[2]={1,2} string d[3]={

JAVA一维数组

import java.applet.Applet; import java.awt.*; //用*表示包含awt这个源包下的所有方法成员,awt为图形界面设计包 public class Applet_Example extends Applet{ int a[]; //定义一个一维数组 public void init(){ a=new int[5]; //定义一个一维数组,该数组包含5个元素 a[0]=100; //分别对数组元素赋值 a[1]=101; a[2]=102; a[3]=10