2011年7月26日 星期二

矩陣的翻轉

內容 : 
已知一(m x n)矩陣A,我們常常需要用到另一個將A中之行與列調換的矩陣。這個動作叫做矩陣的翻轉。舉例來說,若
=[312]
854
AT =[38]
15
24

現在 請您針對所讀取到的矩陣進行翻轉。
輸入說明 :
第一行會有兩個數字,分別為 列(row)<100 和 行(column)<100,緊接著就是這個矩陣的內容
輸出說明 :
直接輸出翻轉後的矩陣
範例輸入 :
2 3 
3 1 2 
8 5 4 
範例輸出 :
3 8 
1 5 
2 4 

4 則留言:

  1. 網誌管理員已經移除這則留言。

    回覆刪除
  2. Dim X(99, 99) As Integer


    Private Sub Form_Load()
    Me.Hide
    Open App.Path & "\in.txt" For Input As #1
    Open App.Path & "\out.txt" For Output As #2
    Input #1, M, N


    For i = 1 To M
    For j = 1 To N
    Input #1, A
    X(i, j) = A
    Next j
    Next i

    For i = 1 To N
    ans = ""
    For j = 1 To M
    ans = ans & " " & X(j, i)
    Next j
    Print #2, ans
    Next i

    Close #2
    Close #1
    End
    End Sub

    回覆刪除
  3. Private Sub Form_Load()
    Me.Hide
    Open App.Path & "\in.txt" For Input As #1
    Open App.Path & "\out.txt" For Output As #2
    Input #1, a, b


    Dim D(99, 99), ans

    For i = 1 To a
    For j = 1 To b
    Input #1, n
    D(i, j) = n
    Next
    Next

    For i = 1 To b
    ans = ""
    For j = 1 To a
    ans = ans & " " & D(j, i)
    Next
    Print #2, ans
    Next






    Close
    Close
    End
    End Sub


    //-----
    還是你的方法好呢
    原本我一開始想用的方法折騰了半天
    還是弄不太出來

    回覆刪除
  4. 佑、arro好,
    你們程式都正確。
    但是,其實用成一維陣列,就可以了。
    dim x(1000)
    Input #1, M, N
    k=0
    For i = 1 To M
    For j = 1 To N
    Input #1, A
    k=k+1
    X(k) = A
    Next j
    Next i
    '輸出時m和n互換,加上利用print換行的功能,就行了。
    k=0
    For i = 1 To N
    For j = 1 To M

    k=k+1
    print #2,X(k) ;
    Next j
    print #2,""

    Next i


    這樣也是可以的。

    回覆刪除