Что нового

Сложение, слияние, конкатенация двумерных массивов

Pat4005

Новичок
Сообщения
85
Репутация
4
Здравствуйте. Такая проблема - не знаю как один двумерный массив совместить с несколькими другими такой же размерности так, чтобы их элементы сложились. Обсуждалось это здесь http://autoit-script.ru/index.php/topic,6966.0.html но я не понял какие параметры использует и как возвращает значение функция товарища gregaz.. Может кто объяснит?
Код:
Func _2DArrayConcatenate(ByRef $avArrayTarget, Const ByRef $avArraySource, $iStart = 0)
    If Not IsArray($avArrayTarget) Then Return SetError(1, 0, 0)
    If Not IsArray($avArraySource) Then Return SetError(2, 0, 0)
    If UBound($avArrayTarget, 2) <> UBound($avArraySource, 2) Then  Return SetError(3, 0, 0)

    Local $iUBoundTarget1 = UBound($avArrayTarget, 1) - $iStart, $iUBoundTarget2 = UBound($avArrayTarget, 2) 
    Local $iUBoundSource1 = UBound($avArraySource, 1)
    
    ReDim $avArrayTarget[ $iUBoundTarget1 + $iUBoundSource1][ $iUBoundSource1]
    For $i = $iStart To $iUBoundSource1 - 1
        For $j= 0 To $iUBoundTarget2 - 1
            $avArrayTarget[$iUBoundTarget1 + $i] [$j]= $avArraySource[$i][$j]
        Next
    Next

    Return $iUBoundTarget1 + $iUBoundSource1
EndFunc
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Там случай другой...
Попробуй более простой вариант
Код:
Func _2DArrayAdd(ByRef $avArrayTarget, Const ByRef $avArraySource)
    If Not IsArray($avArrayTarget) Then Return SetError(1, 0, 0)
    If Not IsArray($avArraySource) Then Return SetError(2, 0, 0)
	Local $iUBoundTarget1 = UBound($avArrayTarget, 1)
	Local $iUBoundTarget2 = UBound($avArrayTarget, 2)
    Local $iUBoundSource1 = UBound($avArraySource, 1)
	Local $iUBoundSource2 = UBound($avArraySource, 2)
    If $iUBoundTarget1 <> $iUBoundSource1 Then  Return SetError(3, 0, 0)
    If $iUBoundTarget2 <> $iUBoundSource2 Then  Return SetError(3, 0, 0)
	
    For $i = 0 To $iUBoundTarget1 - 1
        For $j= 0 To $iUBoundTarget2 - 1
            $avArrayTarget[$i][$j] += $avArraySource[$i][$j]
        Next
    Next
EndFunc
 
Автор
P

Pat4005

Новичок
Сообщения
85
Репутация
4
Спасибо большое. Блин, пишу вроде сам, а без вас ребят - никуда
 
Верх