176 lines
3.6 KiB
QBasic
176 lines
3.6 KiB
QBasic
' ============================================================
|
|
' 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 ===="
|