嗨,我让imagen 3阵列
ArrayA = {1,2,3}
ArrayB = {4,5,6,7}
ArrayC = {8,9,10,11,12}
我想循环使用这些,但按顺序如下
打印ArrayA,B,C第一个值
打印ArrayA,b,C第二个值
打印ArrayA,B,C第三个值
打印ArrayA,b,C第四值
...
...
...
所以它会输出
-1,4,8-
-2,5,9-
3,6,10
此时阵列A需要环绕,所以下一个输出将是
1,7,11-
2,4,12
...
...
如果阵列中我可以做10个相同大小的项目
x = 0到9
print ArrayA {x}
print ArrayB(x)
print ArrayC(x)
下一个x
但是对于不同长度的数组,我仍然可以将它们放在同一个循环中,我想我可以在每次循环运行时增加数组,例如
X = X + 1 如果x>数组最大值然后x = 0
但可以以更有效的方式完成吗?
我正在考虑在perl中执行此操作,我知道上面的代码与perl完全不同,所以实际代码在下面,但目前我正在使用VBA。
stars是一个199维的单维数组,这个数组中的每个项目都是一个720长3宽的二维数组。 SO星(个体恒星)(指向轨道,x坐标,y坐标)
所以star(1)包含的数组具有0.5度分辨率的恒星轨道的x,y坐标。但有些需要有不同的分辨率,所以尺寸会有所不同。但我仍然希望能够不断地循环它们并根据需要包装每个数组。
For h = 0 To 720
'Application.ScreenUpdating = False
For st = 0 To 199
Cells(st + 10, 2).Value = stars(st)(h, 1)
Cells(st + 10, 3).Value = stars(st)(h, 2)
Next
'calls chart to update
'Application.ScreenUpdating = True
DoEvents
Next
干杯
答案 0 :(得分:4)
如果你想要回头看,你可以使用' mod',就像在'指数mod大小'
[ADDENDUM - FreeBasic示例]
const aSize=5
const bSize=3
dim a(0 to aSize-1) as integer
dim b(0 to bSize-1) as integer
a(0)=0
a(1)=1
a(2)=2
a(3)=3
a(4)=4
b(0)=0
b(1)=10
b(2)=20
for i=0 to 20
print "[";a(i mod aSize);" ";b(i mod bSize);"]"
next
sleep