回 帖 发 新 帖 刷新版面

主题:[讨论]二维数组里面暗藏的相对二维数组的计算

我用C++编写了如下的一段程序:
#include<iostream.h>
void main()
{
    //声明变量
    int m4,i;
    double k;
    double a[12][10]={
        {2,2,2,2,2,2,2,2,2,2},
        {2,2,2,2,2,2,2,2,2,2},
        {3,3,3,3,3,3,3,3,3,3},
        {4,4,4,4,4,4,4,4,4,4},
        {1,1,1,1,1,1,1,1,1,1},
        {1,1,1,1,1,1,1,1,1,1},
        {2,2,2,2,2,2,2,2,2,2},
        {5,5,5,5,5,5,5,5,5,5},
        {1,1,1,1,1,1,1,1,1,1},
        {0,0,0,0,0,0,0,0,0,0},
        {2,2,2,2,2,2,2,2,2,2},
        {1,1,1,1,1,1,1,1,1,1}
    };
    for (i=1;i<=11;i++)
    {k=a[0][0]*a[i+0][0];
          if (k==4)
          {
             cout<<"   a["<<i<<"][0]";
             cout<<"  i="<<i<<endl;
     }
}
}
程序运行一切正常,运行结果如下:
   a[1][0]  i=1
   a[6][0]  i=6
   a[10[0]   i=10
其中 a[1][0]表示 a[1][0]所在位置的元素的值与a[0][0]所在位置的元素的乘积为我预先给定的值k==4  i=1表示 a[1][0]所在位置的元素的行数。
同理 a[6][0]表示 a[6][0]所在位置的元素的值与a[0][0]所在位置的元素的乘积为我预先给定的值k==4  i=6 表示 a[6][0]所在位置的元素的行数。
现在我想请教大家一个问题:运行结果里面有一句话:a[6][0]  i=6。
如何将行数i=6变为i=0,相应的该元素的列的值就增加6,也就是行减少多少行,列数就增加多少列。相当于a[6][0]变为了a[0][6],但是a[10][0]
不是变为了a[0][10] ,而是变为了a[4][6],(也就是说,原先a[6][0]的行减少多少行,a[10][0]的行也减少多少行 ,a[6][0]的列 增加多少列  ,
a[10][0]的列 也增加多少列,他们的相对位置没有发生改变)再来计算变换后的两个位置a[0][6]和a[4][6]的乘积。请问,在原程序的基础上该怎
么修改?最好把修改后的原程序发上来,因为我学得不好,要好好学学,谢谢!!

回复列表 (共22个回复)

21 楼

二维数组里面暗藏的相对二维数组的计算是你自己创造的概念吗?搞创新不是这么创新的

22 楼


  搞创新,有什么不好呢??
我是从"根据直角坐标和极坐标的关系"上联想到的,在一个普通的二维数组里面拿一个矩形框框去框,框里面左上角第一个元素A就是第一个满足条件的原数组元素B,框内的其他元素就是A和B重叠时,分别所对应的元素.这有什么不对的呢???
如果一个人的思维不开阔,能行吗???

我来回复

您尚未登录,请登录后再回复。点此登录或注册