2014-12-23 3 views
3

Привет Я позволяет imágen 3 массивыПеребор массивов различных размеров

Arraya = {1,2,3}
ArrayB = {4,5,6,7}
ArrayC = {8,9 , 10,11,12}

хочу петли, хотя эти, но в определенной последовательности, как показано ниже

печати Arraya, в, с первым значением
печати Arraya, B, C второе значение
печати Arraya, B , C третье значение
печати Arraya, B, C п значение
... ... ...

поэтому будет выводить

1,4,8
2,5,9
3, 6,10

в этой точке массива А нужно, чтобы обернуть вокруг так что следующий выход будет

1,7,11
2,4,12
... ...

, если массивов, где тот же самый размер 10 пунктов, которые я мог бы сделать

х = 0 до 9
печати Arraya {х}
печати ArrayB (х)
печать ArrayC (х)
следующая х

но с массивами разной длины может я еще положить их в ту же петлю, я полагаю, я мог бы поставить подсчитывали в массив, который получает приращение каждый раз, когда запускает цикл, как и

х = х + 1 если х> массив значение макс, то х = 0

, но это может быть сделано в более эффективном пути?

Я смотрю на это в perl, и я знаю, что приведенный выше код не похож на perl, поэтому фактический код ниже, но в настоящее время я играю в VBA.

stars - это единый размерный массив 199, и каждый элемент в этом массиве представляет собой массив размером 720 длиной и 3 шириной. Звезды SO (отдельная звезда) (точка на орбите, x cordinate, y cordinate)

Таким образом, звезда (1) содержит массив, который имеет кордины x, y орбиты звезды с разрешением 0,5 градуса. но некоторые из них должны иметь разные разрешения, поэтому они будут различаться по размеру. но я все же хочу, чтобы они могли непрерывно прокручивать их и обертывать каждый массив по мере необходимости.

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 

Приветствие

ответ

4

Если вы хотите, чтобы обернуть вокруг, вы можете просто использовать 'моды', как в 'индексе по модулю размера'

[ДОБАВЛЕНИЕ - 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 
+0

Извините, можете ли вы расширить это или связать некоторые документы? – DevilWAH

+0

Да, вот некоторые FreeBasic код, как например: \t Const aSize = 5 \t Const BSIZE = 3 \t тусклым с (от 0 до aSize-1) в виде целого числа \t тусклый б (от 0 до BSIZE-1) в качестве целого числа \t а (0) = 0 \t а (1) = 1 \t а (2) = 2 \t а (3) = 3 \t а (4) = 4 \t б (0) = 0 \t b (1) = 10 \t Ь (2) = 20 \t при г = 0 до 20 \t печати "["; а (я моды aSize); " "; б (я моды BSIZE);"]" \t следующей \t сна – dwn

+0

Я думаю, что это прекрасно :), я все еще ищу ту же функцию в perl, но уверен, что она должна быть там где. – DevilWAH

Смежные вопросы