55 lines
1.5 KiB
Plaintext
55 lines
1.5 KiB
Plaintext
#COMPILE EXE
|
|
#DIM ALL
|
|
#COMPILER PBCC 6
|
|
'----------------------------------------------------------------------
|
|
SUB TransposeMatrix(InitMatrix() AS DWORD, TransposedMatrix() AS DWORD)
|
|
LOCAL l1, l2, u1, u2 AS LONG
|
|
l1 = LBOUND(InitMatrix, 1)
|
|
l2 = LBOUND(InitMatrix, 2)
|
|
u1 = UBOUND(InitMatrix, 1)
|
|
u2 = UBOUND(InitMatrix, 2)
|
|
REDIM TransposedMatrix(l2 TO u2, l1 TO u1)
|
|
MAT TransposedMatrix() = TRN(InitMatrix())
|
|
END SUB
|
|
'----------------------------------------------------------------------
|
|
SUB PrintMatrix(a() AS DWORD)
|
|
LOCAL l1, l2, u1, u2, r, c AS LONG
|
|
LOCAL s AS STRING * 8
|
|
l1 = LBOUND(a(), 1)
|
|
l2 = LBOUND(a(), 2)
|
|
u1 = UBOUND(a(), 1)
|
|
u2 = UBOUND(a(), 2)
|
|
FOR r = l1 TO u1
|
|
FOR c = l2 TO u2
|
|
RSET s = STR$(a(r, c))
|
|
CON.PRINT s;
|
|
NEXT c
|
|
CON.PRINT
|
|
NEXT r
|
|
END SUB
|
|
'----------------------------------------------------------------------
|
|
SUB TranspositionDemo(BYVAL DimSize1 AS DWORD, BYVAL DimSize2 AS DWORD)
|
|
LOCAL r, c, cc AS DWORD
|
|
LOCAL a() AS DWORD
|
|
LOCAL b() AS DWORD
|
|
cc = DimSize2
|
|
DECR DimSize1
|
|
DECR DimSize2
|
|
REDIM a(0 TO DimSize1, 0 TO DimSize2)
|
|
FOR r = 0 TO DimSize1
|
|
FOR c = 0 TO DimSize2
|
|
a(r, c)= (cc * r) + c + 1
|
|
NEXT c
|
|
NEXT r
|
|
CON.PRINT "initial matrix:"
|
|
PrintMatrix a()
|
|
TransposeMatrix a(), b()
|
|
CON.PRINT "transposed matrix:"
|
|
PrintMatrix b()
|
|
END SUB
|
|
'----------------------------------------------------------------------
|
|
FUNCTION PBMAIN () AS LONG
|
|
TranspositionDemo 3, 3
|
|
TranspositionDemo 3, 7
|
|
END FUNCTION
|