麻烦哪位大哥教教我这个题~
编写程序,实现矩阵转置,即将一个n×m的矩阵的行和列互换。例如,a矩阵为
1 2 3
a= 4 5 6
转换和的矩阵为:
a= 1 4
2 5
3 6
这个题应该怎么编?
问题点数:0、回复次数:5Top
1 楼liuyanghe111(yang)回复于 2004-01-04 16:47:00 得分 0
dim a() as long
dim b() as long
dim m as long ,n as long
dim i as long ,j as long
m=?
n=?
redim a(n,m)
redim b(m,n)
'给a(n,m)赋初值
for i=0 to m
for j=0 to n
b(i,j)=a(j,i)
next j
next i
Top
2 楼Huaraco(孤星之旅)回复于 2004-01-04 16:53:24 得分 0
Dim a(2, 3) As Long
Dim b(3, 2) As Long
Dim strs As String
Dim k As Integer
Dim strs1 As String
For i = 0 To 1
For j = 0 To 2
a(i, j) = k
k = k + 1
strs = strs & a(i, j) & " "
Next
strs = strs & vbCrLf
Next
Print strs
For i = 0 To 2
For j = 0 To 1
b(i, j) = a(j, i)
strs1 = strs1 & b(i, j) & " "
Next
strs1 = strs1 & vbCrLf
Next
Print
Print strs1Top
3 楼Huaraco(孤星之旅)回复于 2004-01-04 16:55:06 得分 0
又忘了说了,基本思路就是这样,你再把数据换成你的就行了。Top
4 楼wangweinet777(石头)回复于 2004-01-04 22:22:23 得分 0
上面说的方法都对
补充一点
做矩阵转置的时候,可以先生成转置后的行元素,也可以先生成列元素。
先行:
Dim a() as long
Dim b() as long
Dim m,n as long
Redim a(m,n)
Redim b(n,m)
'初始化m,n
'初始化数组a()
'转置
For i=0 to m
For j=0 to n
b(j,i)=a(i,j)
Next j
Next i
先列:
Dim a() as long
Dim b() as long
Dim m,n as long
Redim a(m,n)
Redim b(n,m)
'初始化m,n
'初始化数组a()
'转置
For i=0 to m
For j=0 to n
b(i,j)=a(j,i)
Next j
Next iTop
5 楼wangweinet777(石头)回复于 2004-01-04 22:41:51 得分 0
Private Sub Form_Paint()
Dim a() As Long
Dim b() As Long
Dim m, n As Long
Dim str As String
m = 3
n = 4
str = ""
ReDim a(m, n)
ReDim b(n, m)
'初始化m,n
'初始化数组a()
'转置
For k = 1 To m
For k1 = 1 To n
a(k, k1) = k & k1
Next
Next
Print "数组A"
Print m & "行" & n & "列"
For k = 1 To m
For k1 = 1 To n
str = str + CStr(a(k, k1)) & " "
Next
Print str
str = ""
Next
Print "================================"
Print "数组B"
Print n & "行" & m & "列"
For i = 1 To m
For j = 1 To n
b(j, i) = a(i, j)
Next j
Next i
str = ""
For k = 1 To n
For k1 = 1 To m
str = str + CStr(b(k, k1)) & " "
Next
Print str
str = ""
NextTop




