zoukankan      html  css  js  c++  java
  • 软件工程课堂训练——结对开发Ⅱ

    一、题目及要求:

          ①要求求出一个二维数组中和值最大的二维子数组。

          ②结对人员:胡亚宝  焦燕

    二、设计思想:

          这一次的实验是在以前的基础上做的,是在二维数组中找出行中最大的和,然后再捆绑上下或前后的数。由于可能性太多,时间不够充分。所以没有继续做下去。

          在进行加和和比较大小这一模块中,我们遇到了困难。首先我们延续了一维数组的第一种方法,用for循环嵌套,每行每列加和并比出最大值,但是开始我们没有在运算完每一行时,将sum值初始化为0,这样不能保证我们运算的都是矩形,而是单纯的一个一个相加。后来我们发现了这个问题,在内层循环中加了一个sum的初始化,这样就实现了能求出3行3列数组中,3行的每一行的最大子数组,并且求出在这3个中最大的那一个。

          在求出行中的最大子数组之后,我们想的是借鉴课上李明同学的思路。确定好行中最大子数组的位置后,遍历它周边的子数组,若它周边的子数组的和值小于零,则它是最大子数组;若周边子数组和值大于等于零,则加上该大于等于零的子数组。但是由于技术原因,我们还没有实现。。

    三、部分源代码

    1 //结对开发  胡亚宝  焦燕
     2 
     3 #include "stdafx.h"
     4 
     5 
     6 int _tmain(int argc, _TCHAR* argv[])
     7 {
     8     int a[3][3];
     9     int i,j,k,m,n;
    10     int max,sum;
    11     
    12     int flag1,flag2; //定位行中最大子数组位置
    13 
    14     printf("请输入一个3行3列二维数组:
    ");
    15 
    16     for(m=0;m<3;m++)
    17     {
    18         for(n=0;n<3;n++)
    19         {
    20             scanf("%d",&a[m][n]);
    21         }
    22         //printf("
    ");
    23     }
    24     max=a[0][0];
    25     for(k=0;k<3;k++)    //包含第k列的最大行
    26     {
    27         
    28         for(i=0;i<3;i++)   //第i行
    29         {
    30             sum=0;
    31             for(j=k;j<3;j++)  //第i行的第j个
    32             {
    33                 sum=sum+a[i][j];
    34                 if(sum>=max)
    35                 {
    36                     max=sum;
    37                     flag1=i; //定位
    38                     flag2=j; 
    39                 }
    40             }
    41         }
    42         
    43     }
    44 
    45 
    46     return 0;
    47 }

    四、心得体会:

          因为好多原因,包括技术上和自身原因,没有把这个程序做完整。真的是挺遗憾的。在进行的过程中我们也想过很多解决方法,效果却不尽人意。得不到理想的结果。

         我们的想法是一行一行一列一列的比较出大小然后求出最大值。但是这样上下或者左右的和就没有考虑进去。后来课上听了几位同学的思路后,我们也决定那样试试,可视情况太多太复杂,两人的能力有限,就没有得到一个完整的程序。

         不过这次合作经过上一次后,我感觉越来越默契。知道如何避免冲突,想法也能想到一块去,效率也高了很多。

    附合照一张:

  • 相关阅读:
    【Python】小练习
    【C语言】利用二维数组输出成绩
    【C语言】多维数组
    【C语言】输入一个字符串,并对字符串中的偶数位置的字符按从小到大的顺序排序,奇数位置的字符不动,输出排序后的结果
    【C语言】一堆数组中存放了10个小于100的整数,请编程对所有数据按照从小到大的顺序进行排序,若个位数相等,则按照十位从小到大的顺序排序,输出排序后的结果
    【C语言】移动指针
    Python中68个内置函数的总结
    【Python】变量命名习惯
    【Python】 基础语法
    【Python】 注释
  • 原文地址:https://www.cnblogs.com/123jy/p/4366688.html
Copyright © 2011-2022 走看看