标签:
一、题目要求
1 //程序开发者:曹美娜 盖相庚 2 // 开发时间:2015/3/31 3 4 #include "stdafx.h" 5 #include "fstream.h" 6 #include "iostream.h" 7 #include "stdio.h" 8 #define N 50 9 #define M 50 10 11 void readarry(int arry[][N],int &line,int &row) //读取txt文件中的二维数组 12 { 13 ifstream infile("a.txt"); 14 if(!infile) 15 cout<<"读取失败!"<<endl; 16 else 17 { 18 infile>>line>>row; 19 for(int i=0;i<line;i++) 20 { 21 for(int j=0;j<row;j++) 22 { 23 infile>>arry[i][j]; 24 } 25 } 26 } 27 } 28 29 int maxarry(int arry[][N],int line,int row) //找到二维数组中子矩阵中元素和的最大值 30 { 31 int max[N]; 32 printf("以上数组经变形后:\n"); 33 for(int l=0;l<line;l++) 34 { 35 int max1=-1000; 36 for(int j=0;j<(row+1)/2;j++) 37 { 38 int sum=0; 39 for(int i=j;i<(row+1)/2;i++) 40 { 41 sum=sum+arry[l][i]; 42 if(sum>=max1) 43 { 44 max1=sum; 45 } 46 } 47 48 } 49 max[l]=max1; 50 51 printf("第%d集合所有子数组的和的最大值为:%d\n",l+1,max1); 52 } 53 int fmax=max[0]; 54 for(int q=0;q<line;q++) 55 { 56 if(max[q]>fmax) 57 fmax=max[q]; 58 } 59 printf("所以次二位数字中子数组中各元素的和的最大值为:%d\n",fmax); 60 61 return 0; 62 } 63 64 void reacharry(int arry[][N],int line,int row) //组成一个新数组 65 { 66 int sumarry[M][N]; 67 int sumline,sumrow; 68 int z; 69 for(int r=0;r<row;r++) 70 { 71 z=0; 72 for(int i=0;i<line;i++) 73 { 74 for(int q=line;q>0;q--) 75 { 76 int sum=0; 77 for(int j=i;j<=line-q+i;j++) 78 { 79 sum=sum+arry[j][r]; 80 } 81 sumarry[z][r]=sum; 82 z++; 83 } 84 } 85 } 86 sumline=z-1; 87 sumrow=r; 88 maxarry(sumarry,sumline,sumrow); //将得到的新数组交给maxsrry(),找到最后结果 89 90 } 91 92 int expand(int arry[][N],int &line,int &row) //对二维数组进行拓展 93 { 94 int arry1[N][N]; 95 for(int i=0;i<line;i++) 96 { 97 for(int j=0;j<row;j++) 98 { 99 arry1[i][j]=arry[i][j]; 100 } 101 } 102 int num=0; 103 for(i=0;i<line;i++) 104 { 105 for(int q=row;q<2*row-1;q++) 106 { 107 arry[i][q]=arry[i][num]; 108 num++; 109 } 110 } 111 reacharry(arry1,line,2*row-1); 112 113 return 0; 114 115 } 116 117 118 119 void show(int arry[][N],int line,int row) //显示数组 120 { 121 printf("从“a.txt”文件中读取的数组为:\n"); 122 for(int i=0;i<line;i++) 123 { 124 for(int j=0;j<row;j++) 125 { 126 printf("\t%d\t",arry[i][j]); 127 } 128 printf("\n"); 129 } 130 } 131 132 133 134 135 int main(int argc, char* argv[]) 136 { 137 int arry[M][N]; 138 int line,row; //行,列 139 readarry(arry,line,row); 140 show(arry,line,row); 141 expand(arry,line,row); 142 143 return 0; 144 }
四、截图
可能由于我没有讲拓展后的数组输出,所以读者可能看不太出来设计思路,其实设计思路在我上几篇博客中都有提到,这几个的程序设计思路都有所相同
五、心得体会
本次结对开发用时最短,因为是在上一次二维数组上做的拓展,所以思路捋起来很清晰,所以完成的也就快了,这次放假前老师说要要我们小小的放松一下,所以会有一下段时间不会在和我的小伙伴结对编程了,总结一下这几次的结对开发的想法吧,我的小伙伴还是很给力的,只不过是比较自谦,不太信任自己的能力,有时候想东西他也是要比我快的,思维要比我更活跃,希望盖盖同学好好努力,不要太早的为自己盖上标签。
结对开发就是要2个人把自己的想法、热情都交给对方,一开始老师叫我们这样练习的目的大家都认为太形式化,可是几次下来我想大家或多或少都会有自己的收获,都能从对方身上学到些东西,我想大家也会在这段时间里慢慢成长起来。
标签:
原文地址:http://www.cnblogs.com/caomeina/p/4381898.html