结对编程之数组长度要求和大数溢出

1.题目:

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

2.要求:

1)要求程序必须能处理1000个元素;

2)每个元素都是int32类型的。

3.设计思路:

处理1000个元素时让用户自己输入想要的数组长度,看看运行时出处理时间的长短,再在源程序中改善这一问题。

处理大数溢出时,由于随机函数生成的数不算太大,我们尽量让其最终存入数组的元素接近最大范围,进而求和时才可能出现大数溢出的情况。

4.源代码:

 1 #include<iostream>
 2 #include<stdlib.h>
 3 using namespace std;
 4 #include <ctime>
 5 #include <cstdlib>
 6 #define MAX 100000
 7 int main()
 8 {
 9     int k,t=0,o=0;
10     int n=0,m=0;
11     int b[MAX];
12     int a[MAX];
13     cout<<"请输入数组中整数的个数:"<<endl;
14     cin>>k;
15     srand(time(0));
16     for(int i=0;i<k;i++)
17     {
18         a[i]=rand()%100-50;
19         cout<<a[i]<<" ";
20     //    cin>>a[i];
21     }
22
23     for(int l=1;l<k+1;l++)
24     {
25         for(i=0;i<k-l+1;i++)
26         {
27             for(int j=i;j<i+l;j++)
28             {
29                 if(j>k-1)
30                 {
31                     break;
32                 }
33                 else
34                     m=m+a[j];
35             }
36             b[n]=m;
37             m=0;
38             n=n+1;
39         }
40     }
41     int max=b[0];
42     for(i=1;i<n;i++)
43     {
44         if(max<b[i])
45             max=b[i];
46     }
47 /*    for(i=0;i<n;i++)
48     {
49         if(max==b[i])
50         {
51             m=i;
52         }
53     }
54     m=m+1;
55     int r=k;
56     for(int j=0;j<k;j++)
57     {
58         if(m>=r&&r>=0)
59         {
60             m=m-r;
61             t=t+1;
62             r=r-1;
63         }
64         if(m==0&&r>0&&j!=k-1)
65         {
66             m=m+r+1;
67             break;
68         }
69         if(m==0&&r==0&&t==k)
70         {
71             m=m+1;
72             break;
73         }
74     }*/
75     cout<<endl;
76     cout<<"该数组中的最大子数组的和为:"<<max<<endl;
77     /*cout<<"这些数字为:";
78     m=m-1;
79     if(t==0)
80     {
81         t=1;
82     }
83     for(i=m;i<m+t;i++)
84     {
85         cout<<a[i]<<"   ";
86     }
87     for(i=0;i<n;i++)
88         cout<<b[i]<<" ";*/
89     return 0;
90 }

5.结果截图:

6.心得体会:

本次重点在于大数溢出的解决,我们首次实现大数溢出时多次出现程序异常关闭的情况,即使可以运行时也不提示错误。对于这一点的解决,我们想到了数组元素随机生成过大时则重新生成,也可以对结果进行判断,主动提示错误进而解决。但我们对于真正解决大数溢出还没有具体的解决方案,这算是我们的不足吧,日后一定多多注意这一点。

时间: 2024-10-11 21:42:41

结对编程之数组长度要求和大数溢出的相关文章

结对开发——数组求和大数溢出问题

一.题目要求 返回一个整数数组中最大子数组的和. 要求程序必须能处理1000 个元素:   每个元素是int32 类型的:   输入一个整形数组,数组里有正数也有负数. 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 求所有子数组的和的最大值. 二.程序代码 三.结果截图 四.心得体会

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

一.设计思路 根据上一个实验,再让他自动生成1000个随机long型数.并且自己埋入炸弹,看是否有异常出错. 二.实验代码 1 import java.util.*; 2 class SuperMax3 3 { 4 public static void main(String[] args) 5 { 6 long[] list = new long[1000];//输入数组是必须先定义数组,否则出错! 7 long[] arr1 = new long[1000];//输入数组是必须先定义数组,否

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

结对人员:韩雪东,高扬 一.设计思路 对于大数溢出问题开始很迷茫,不大懂该干什么,思路匮乏.因为只要溢出这个数就不会被存储被改变,这样导致很难去判断溢出后该怎样做,但后来我们改变了一下思路,采用逆向思维,首先找到能存储的最大数,用它来减去将要运行的数,从而与即将要加的数比较,如果小了咋说明相加后会产生溢出,直接结束程序. 二.源代码 // ceshi.cpp : Defines the entry point for the console application. //作者:韩雪东,高扬 //

结对编程之求首尾相连数组中最大子数组的和

1.题目: 返回一个整数数组中最大子数组的和. 2.要求: 输入一个整形数组,数组里有正数也有负数.数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和.如果数组A[0]……A[j-1]首尾相邻,允许A[i-1], …… A[n-1], A[0]……A[j-1]之和最大.同时返回最大子数组的位置.求所有子数组的和的最大值.要求时间复杂度为O(n). 3.设计思想: 分情况讨论最大子数组可能出现的情况,第一种为正常情况,没有超过数组范围,第二种则比较复杂,要用到环的一部分元素,分而求出两

结对编程返回整数数组中最大的子数组

#include<iostream> #include<ctime> using namespace std; int main() { cout<<"数1601-2 20163980 \n黄瑞波"<<endl;; int m,n=0,star=0,end=0; cout<<"1.手动输入数组.\n2.随机生成数组.请选择功能:";//选择自己输入或者随机生成 cin>>m; switch(m)

结对编程—WordsCount

目录 Part1 Github项目地址 Part2 PSP表格 Part3 需求分析 Part 4 代码框架与接口 代码规范 计算模块接口的设计与实现过程.设计包括代码如何组织 具体功能函数实现 结对编程中原则的体现 单元测试 效能分析 Part 5 结对过程 Part1 Github项目地址 Fork仓库的Github项目地址 [email protected]:JusticeXu/WordCount.git 结对伙伴GIthub地址 npc1158947015 Part2 PSP表格 PSP

结对编程黄金点游戏

此次结对编程我是与同班的王鑫同学一组,题目是设计一个黄金点游戏,本来看老师建议界面和服务器的设计,想用java来写,但是我俩对于java不太熟悉,忙活了两天没有结果,干脆用我二人共同会的语言C语言来实现,所以我二人决定通过C语言来实现这个游戏. 题目要求设计的游戏的规则为:有N个同学(N通常大于10),每人写一个0~100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值.提交的数字最靠近G(取绝对值)的同学得到N分,离G最远

第一次结对编程

经过几周的软件工程的学习,开始了第一次结对编程的项目,这让我在知道队友之前心里很是忐忑,我先来说一说原因吧.因为我对编程基础不是很好,我就在想给我分配一个大神,就会感觉压力真的好大,如果给我分配一个比我还不行的那我们不就完蛋了.之后看到老师给我分配的是璐姐,或多或少还是有压力的,但是在团队合作的过程当中发现我的顾虑是多余的.在我遇到问题的时候,璐姐还是会抽出自己的时间给我讲一些有关题目的方法,非常仔细认真,我也知道她要考研,能抽出时间来给我讲真的很感动.真心是一个中国好队友.在编程的过程中我们是

结对编程 一

我和我的组员小奈儿一组. 在月黑风高的周五晚上,我和他在信息楼401进行了深入的讨♂论. 设计初稿====================================开始 功能增加:小数,分数,负数 数据范围:4个运算符 //经过讨论,认为这个要求有点鸡肋-1000到1000 //其实这个也有一点…因为如果使用字符串进行大数计算的话,任何长度都能表示,然而有些麻烦结果精度--小数点后2位 //需要设置变量记录 健壮性:判表达式合法性,除0错,输入数值越界. 类名 Pascal //这两个为命