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


    一题目

    一.实验要求

    求一维数组最大子数组和

    要求:1000个数以上,32位整数

    二.设计思路

    因为我们的程序一开始就可以运算1000个以上数的运算,最大个数为364,526,269,原因为找出。

    这次实验主要目的是解决最大值溢出的问题,本来想输出这个溢出的数值,但没有实现,于是改为若溢出,则输出提示,并返回溢出的上一个最大值。

    三.代码

     1 // ketang4.cpp : 定义控制台应用程序的入口点。
     2 //张世通 梁世豪
     3 
     4 #include "stdafx.h"
     5 #include "iostream"
     6 using namespace std;
     7 
     8 
     9 /*确定求和存储数组元素*/
    10 void Son(int father[],int length)
    11 {
    12     int MMAX=2147483580;
    13     int max=father[0];
    14     int add=0;                                                    //定义求和变量
    15     int j;
    16      for(int i=0;i<length;i++)
    17      {
    18         add=0;
    19         for(j=i;j<length;j++)
    20         {
    21             add=add+father[j];
    22             if(add>max&&add<MMAX)
    23             {    
    24                 max=add;
    25             }
    26             else if(add>MMAX)
    27             {
    28                 break;
    29             }
    30         }
    31         if(MMAX-max<father[j+1])
    32         {
    33             cout<<"结果超出最大表示范围,将输出上一个最大值:"<<endl;
    34             break;
    35         }
    36      }
    37         cout<<"最大子数组的和为:"<<max<<endl;
    38 }
    39 
    40 /*主函数*/
    41 int main()
    42 {
    43     int length,num;                                                //定义原始数组长度length,求和存储数组长度num
    44     cout<<"请输入数组元素个数:";
    45     cin>>length;
    46     int* father=new int[length];                                //定义原始数组
    47     for(int i=0;i<length;i++)
    48     {
    49         father[i]=(rand()%1000)*1000000;
    50     //    cout<<father[i]<<"    ";
    51     }
    52     cout<<endl;
    53     
    54     
    55     Son(father,length);
    56     delete []father;
    57     return 0;
    58 }

    四.运行截图

    五.实验总结

    虽然这次实验要求的没有像预期那样让每个功能都实现,但是这次实验让我了解了如果数据过多数值过大,会对程序造成什么样的影响,要想解决溢出问题还要继续学习,多实践,现在才知道这是一个不可忽视的问题,在以后的编程中非常值得注意。

    六.合影

  • 相关阅读:
    小三学算术
    The Balance
    扫描线
    2019牛客暑期多校训练营(第九场)
    后缀数组
    Manacher
    局部变量和全局变量的区别
    2386:Lake Counting-poj
    简单背包问题(0032)-swust oj
    编程中易犯错误集锦-持续更新。。。。。
  • 原文地址:https://www.cnblogs.com/zglsh/p/4378662.html
Copyright © 2020-2023  润新知