' ============================================================ ' Test program for multidimensional arrays ' ============================================================ PRINT "==== Multidimensional Array Tests ====" ' ---- Test 1: 2D integer array ---- PRINT "" PRINT "---- Test 1: 2D integer array ----" DIM matrix(3, 4) AS INTEGER DIM i AS INTEGER DIM j AS INTEGER ' Fill with i*10 + j FOR i = 0 TO 3 FOR j = 0 TO 4 matrix(i, j) = i * 10 + j NEXT j NEXT i ' Read back specific elements PRINT "matrix(0,0) = "; matrix(0, 0) PRINT "matrix(1,2) = "; matrix(1, 2) PRINT "matrix(3,4) = "; matrix(3, 4) PRINT "matrix(2,3) = "; matrix(2, 3) ' ---- Test 2: 2D string array ---- PRINT "" PRINT "---- Test 2: 2D string array ----" DIM grid$(2, 2) AS STRING grid$(0, 0) = "NW" grid$(0, 1) = "N" grid$(0, 2) = "NE" grid$(1, 0) = "W" grid$(1, 1) = "C" grid$(1, 2) = "E" grid$(2, 0) = "SW" grid$(2, 1) = "S" grid$(2, 2) = "SE" FOR i = 0 TO 2 FOR j = 0 TO 2 PRINT grid$(i, j); " "; NEXT j PRINT "" NEXT i ' ---- Test 3: 3D array ---- PRINT "" PRINT "---- Test 3: 3D array ----" DIM cube(2, 3, 4) AS INTEGER DIM k AS INTEGER ' Fill with i*100 + j*10 + k FOR i = 0 TO 2 FOR j = 0 TO 3 FOR k = 0 TO 4 cube(i, j, k) = i * 100 + j * 10 + k NEXT k NEXT j NEXT i PRINT "cube(0,0,0) = "; cube(0, 0, 0) PRINT "cube(1,2,3) = "; cube(1, 2, 3) PRINT "cube(2,3,4) = "; cube(2, 3, 4) PRINT "cube(2,0,1) = "; cube(2, 0, 1) ' ---- Test 4: 2D with expressions ---- PRINT "" PRINT "---- Test 4: 2D with expressions ----" DIM r AS INTEGER DIM c AS INTEGER r = 5 c = 3 DIM table(r, c) AS DOUBLE table(1, 1) = 3.14 table(4, 2) = 2.71 table(r, c) = 9.99 PRINT "table(1,1) = "; table(1, 1) PRINT "table(4,2) = "; table(4, 2) PRINT "table(5,3) = "; table(r, c) ' ---- Test 5: Loop over 2D array ---- PRINT "" PRINT "---- Test 5: Loop over 2D ----" DIM small(2, 3) AS INTEGER DIM sum AS INTEGER sum = 0 FOR i = 0 TO 2 FOR j = 0 TO 3 small(i, j) = (i + 1) * (j + 1) sum = sum + small(i, j) NEXT j NEXT i PRINT "Sum of multiplication table: "; sum ' Print the table FOR i = 0 TO 2 FOR j = 0 TO 3 PRINT small(i, j); " "; NEXT j PRINT "" NEXT i ' ---- Test 6: REDIM 2D ---- PRINT "" PRINT "---- Test 6: REDIM 2D ----" DIM resizable(2, 2) AS INTEGER resizable(0, 0) = 1 resizable(1, 1) = 5 resizable(2, 2) = 9 PRINT "Before REDIM: "; resizable(1, 1) REDIM resizable(4, 4) AS INTEGER PRINT "After REDIM (0,0): "; resizable(0, 0) resizable(3, 3) = 42 PRINT "After REDIM (3,3): "; resizable(3, 3) ' ---- Test 7: Mixed 1D and 2D ---- PRINT "" PRINT "---- Test 7: Mixed 1D and 2D ----" DIM arr1d(5) AS INTEGER DIM arr2d(3, 3) AS INTEGER FOR i = 0 TO 5 arr1d(i) = i * 2 NEXT i FOR i = 0 TO 3 FOR j = 0 TO 3 arr2d(i, j) = arr1d(i) + arr1d(j) NEXT j NEXT i PRINT "arr1d(3) = "; arr1d(3) PRINT "arr2d(2,3) = "; arr2d(2, 3) PRINT "arr2d(1,2) = "; arr2d(1, 2) ' ---- Test 8: 2D array in SUB (BYREF) ---- PRINT "" PRINT "---- Test 8: 2D array element BYREF ----" DIM val AS INTEGER val = 100 DIM testArr(3, 3) AS INTEGER testArr(1, 2) = 50 GOSUB addTen PRINT "val after GOSUB: "; val GOTO afterAddTen addTen: val = val + 10 RETURN afterAddTen: ' ---- Test 9: 2D DOUBLE array ---- PRINT "" PRINT "---- Test 9: 2D DOUBLE array ----" DIM dbl2d(2, 2) AS DOUBLE dbl2d(0, 0) = 1.1 dbl2d(0, 1) = 2.2 dbl2d(0, 2) = 3.3 dbl2d(1, 0) = 4.4 dbl2d(1, 1) = 5.5 dbl2d(1, 2) = 6.6 dbl2d(2, 0) = 7.7 dbl2d(2, 1) = 8.8 dbl2d(2, 2) = 9.9 DIM dsum AS DOUBLE dsum = 0 FOR i = 0 TO 2 FOR j = 0 TO 2 dsum = dsum + dbl2d(i, j) NEXT j NEXT i PRINT "Sum of doubles: "; dsum PRINT "" PRINT "==== ALL MULTIDIMENSIONAL TESTS COMPLETE ===="