标签:
结对人员:张世通 梁世豪
一、题目
题目:求一维数组最大子数组的和
要求:能计算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