只给你N个1维数组 
要你利用这“N个1维数组”来模拟 或是 组合成 一个完整的2维数组有办法么?
在这个程序里只有A[X]
不能使用A[X,Y]

解决方案 »

  1.   

    干嘛要N个1维数组?不管它多少维,只要能装下,1维就够了。Text1的MultiLine属性设置成TruePrivate Sub Command1_Click()
      Dim tX As Long
      Dim tY As Long
      Dim tArray() As Long
      Dim tArrayWidth As Long
      Dim tArrayHeight As Long
      
      tArrayWidth = 10
      tArrayLine = 10
      
      ArraySetBound tArray(), tArrayLine, tArrayWidth
      
      For tX = 0 To 9
        For tY = 0 To 9
          ArrayPutValue tArray(), tY * 10 + tX, tX, tY, tArrayWidth
        Next
      Next
      
      Text1.Text = ""
      
      For tX = 0 To 9
        For tY = 0 To 9
          Text1.Text = Text1.Text & " " & ArrayGetValue(tArray(), tX, tY, tArrayWidth)
        Next
        Text1.Text = Text1.Text & vbCrLf
      Next
      
    End SubPublic Function ArrayGetValue(ByRef pArray() As Long, ByVal pX As Long, ByVal pY As Long, ByVal pArrayWidth As Long) As Long
      '返回数组pArray的pX,pY元素的值,数组pArray的宽度是pArrayWidth。
      Dim tOutLong As Long  Dim tArray_Index As Long
      tArray_Index = pY * pArrayWidth + pX
      tOutLong = pArray(tArray_Index)
      
      ArrayGetValue = tOutLong
    End FunctionPublic Sub ArrayPutValue(ByRef pArray() As Long, ByVal pValue As Long, ByVal pX As Long, ByVal pY As Long, ByVal pArrayWidth As Long)
      '将pValue写入数组pArray的pX,pY元素,数组pArray的宽度是pArrayWidth。
      Dim tArray_Index As Long
      tArray_Index = pY * pArrayWidth + pX
      pArray(tArray_Index) = pValue
    End SubPublic Sub ArraySetBound(ByRef pArray() As Long, ByVal pX As Long, ByVal pY As Long)
      '定义数组pArray的下界,使其容纳pX*pY个元素。
      Dim tArray_Length As Long
      tArray_Length = (pX * pY) - 1
      ReDim pArray(tArray_Length)
    End Sub
      

  2.   

    1维转二维的关键在于数组的宽度设置。假设N是1维定位,Xmax是宽度。则N=Y*Xmax+X。就这么简单。二维数组:
    N=Y*Xmax+(X)三维数组:
    N=Z*(Xmax*Ymax)+(Y*Xmax+(X))四维数组:
    N=A*(Zmax*Xmax*Ymax)+(Z*(Xmax*Ymax)+(Y*Xmax+(X)))如果维数特别多,就需要用递归过程了。默认多维数组是88维,由于递归最大允许88级调用。但是如果你用自己设计的堆做递归,理论上只要变量空间允许,可以无限维。
      

  3.   

    道理很簡單;
    A[x]=B[y,z]
    x=y*z+z
    所以用一個一維數組就可以表示已確定上下界的2維甚至3維4維..數組
      

  4.   

    因为我用的不是 VB写的代码,只是与VB十分相似那个语言 只支持1维数组 不象VB直接就有多维数组了……
      

  5.   

    了解这些之后,你就会理解BMP文件的文件头为什么要那么设计了。普通的图象亮度是256级别,但是在医学、天文领域采样模拟量可能需要更高的精确度。假如我要为高精度的医学影象设计一个高精度65536级灰度的图片格式,可能就是下面这个样子:Type tpMapFile
      fhHeight as Long
      fhWidth as Long
      fhPixs() as Integer
    End Type初始化这个图象的过程就是:
    Dim tPixs_Length as long
    Dim tMap As tpMapFile
    tPixs_Length=tMap.fhHeight*tMap.fhWidth - 1 '元素总数减去1(因为数组是从0开始的)
    ReDim tMap.fhPixs(tPixs_Length)假如我想在一个文件里保存多张图片,则修改成这样:
    Type tpMapFile
      fhHeight as Long
      fhWidth as Long
      fhPageCount as Long '页数
      fhPixs() as Integer
    End Type初始化这个图象的过程就是:
    Dim tPixs_Length as long
    Dim tMap As tpMapFile
    tPixs_Length=tMap.fhPageCount*tMap.fhHeight*tMap.fhWidth - 1 
    ReDim tMap.fhPixs(tPixs_Length)通常的图象是rgb格式,但是在天文,军事领域可能需要参考多个波长的光谱。假设每个波长的光谱有65536级灰度:Type tpMapFile
      fhHeight as Long
      fhWidth as Long
      fhLayCount as Long '位平面数
      fhPageCount as Long '页数
      fhPixs() as tpPix
    End Type之所以举这个例子是希望提醒你:许多看似是死规矩的东西,其实并没有限制。好比图象并非只允许是256级的RGB格式。假如你知道原理,可以根据具体情况决定如何应用。
      

  6.   

    不是除二,而是开方。H=高
    W=宽H=128/W只可以做个8*16、4*32的小矩阵
      

  7.   

    COPY下来研究 头一次看数组 真不容易 ……
      

  8.   

    如果你的脚本语言数组是long类型,那么128个元素可以保存一个8*16的RGB位图,或者16*32的256色位图(比如手机游戏图块)、64*64的两色点阵(比如比较高清晰度的汉字、手机图标)。