码迷,mamicode.com
首页 > 编程语言 > 详细

一维数组最大数溢出判断

时间:2015-03-30 16:13:08      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:

结对人员:张世通 梁世豪

一、题目

  题目:求一维数组最大子数组的和

  要求:能计算1000以上的数组

二、设计思路

  我们最初的实现思路是通过字符串数组实现大数的计算,但是没有实现,原因是在用字符串数组进行加法运算时,进位处理还有字符串和整数的转换做不好,所以我们最后决定不再对大数溢出进行处理,而是直接给出大数溢出的异常提醒,并给出上一个正确的运算结果。虽然没有实现用字符串解决大数溢出的问题,但还是列出部分代码,说明我们的思路

 1 void Reset (char n[],int a[])
 2 {
 3     char s[Len];
 4     int i,l;
 5     for(i=0; i<Len; i++) n[i]=0;
 6     itoa(a[i], str, 10);            //整数和字符串的转换
 7     l= strlen(s);
 8     for(i=0; i<l; i++) //将输入的大数逆置
 9         n[i]=s[l-i-1]-0;
10 }

这是我们将数组转换成字符串的函数,经过测试,转换是成功的,下面是我们定义的加法

void Add (char a[],char b[],char c[])//字符串数组加法
{
    int i=0;
    for(i=0; i<Len; i++)
        c[i]=a[i]+b[i];
    for(i=0; i<Len; i++)            //处理进位
    {
        if(c[i]>=10)
        {
            c[i+1]+=c[i]/10;
            c[i]=c[i]%10;
        }
    }
}

我们先将字符串进行了顺序的颠倒,以便进行字符的加法进位,最后结果倒序输出就会得到想要的结果,但是最后结果出现了错误,经过讨论,我们决定不在使用这种方法,直接对溢出进行判断,而不再进行处理

三、实验代码

 

 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)
23             {    
24                 max=add;
25             }
26         }
27         if(MMAX-max<father[j+1])
28         {
29             cout<<"结果超出最大表示范围,将输出上一个最大值:"<<endl;
30             break;
31         }
32      }
33         cout<<"最大子数组的和为:"<<max<<endl;
34 }
35 
36 /*主函数*/
37 int main()
38 {
39     int length,num;                                                //定义原始数组长度length,求和存储数组长度num
40     cout<<"请输入数组元素个数:";
41     cin>>length;
42     int* father=new int[length];                                //定义原始数组
43     for(int i=0;i<length;i++)
44     {
45         father[i]=(rand()%1000)*1000000;
46     //    cout<<father[i]<<"    ";
47     }
48     cout<<endl;
49     
50     
51     Son(father,length);
52     delete []father;
53     return 0;
54 }

 

四、实验结果

技术分享

技术分享

五、分析总结

  这次结对开发中,我们没有实现我们想要的结果,这是一个遗憾,不过我们都很努力的去实现它,不管是讨论,还是检查,查资料,到最后否定,我们都付出了极大的热情,这让我知道,即使与别人合作,也会有失败的时候,重要的是我们怎么对待这件事。我们虽然没有实现这个问题的解决方法,但是我们有思路,想办法去解决了,如果是我自己在解决这个问题的话,应该很快就放弃了吧。

  结对开发,需要两个人的全力付出,这样才能够起到互相激励的作用,如果有一个人懈怠了,必然会影响到另外一个人,这是不负责任的表现,虽然两个人的分工不同,但是两个人的出发点是相同的,都是为了把题目做好,都是为了更好的配合对方,提高自己。我跟梁世豪这次没有把思路实现出来,但是我们还是会认真的去思考这个问题,去想想我们做的不足的地方,找出来并加以改正。

  成功有成功的经验,失败有失败的教训,我们总会一步步成长

六、工作图

技术分享

一维数组最大数溢出判断

标签:

原文地址:http://www.cnblogs.com/zhshto/p/4378109.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!