Что нового

Не могу понять, как присвоить массиву значение другого массива

miamiJock

Новичок
Сообщения
2
Репутация
0
Доброго времени суток. Следующий код:
Код:
#include <Array.au3>

Dim $a[2][3] = [[1, 2, 5], [7, 4, 8]]
Dim $b[3]
$b = $a[0]

выдаёт ошибку "Array variable has incorrect number of subscripts or subscript dimension range exceeded.".
Можете подсказать, как скопировать значение 0-го индекса двумерного массива в отдельный массив?
 

Mirag

Новичок
Сообщения
11
Репутация
3
Если речь о копировании значения "1" из массива $a в первый элемент массива $b, то:
Код:
#include <Array.au3>

Dim $a[2][3] = [[1, 2, 5], [7, 4, 8]]
Dim $b[3]
$b[0] = $a[0][0]
 

Webarion

Осваивающий
Сообщения
143
Репутация
24
Вы обращаетесь к двухмерному массиву, как к одномерному. Для двухмерного нужно так:
Код:
$b = $a[0][0]
 
Автор
M

miamiJock

Новичок
Сообщения
2
Репутация
0
Вы обращаетесь к двухмерному массиву, как к одномерному. Для двухмерного нужно так:
Код:
$b = $a[0][0]
Разве в вашем примере переменная b не стала равна числу? Мне необходимо, чтобы b стало равным массиву [1, 2, 5], то есть a[0].
 

Mirag

Новичок
Сообщения
11
Репутация
3
У вас нет массива "[1, 2, 5]", есть массив "а", состоящий из 6 элементов.
Сообщение автоматически объединено:

Разве в вашем примере переменная b не стала равна числу? Мне необходимо, чтобы b стало равным массиву [1, 2, 5], то есть a[0].
Код:
#include <Array.au3>

Dim $a[2][3] = [[1, 2, 5], [7, 4, 8]]
Dim $b[3]
$b[0] = $a[0][0]
$b[1] = $a[0][1]
$b[2] = $a[0][2]
 

Webarion

Осваивающий
Сообщения
143
Репутация
24
Чтобы в AutoIt обратиться к n-мерному массиву, должно быть соответствующее количество пар квадратных скобок:
[n]-одномерный; [n][m]-двухмерный и так далее
По вашему вопросу:
Код:
#include <Array.au3>
; Вариант 1 статическое добавление
Dim $a[2][3] = [[1, 2, 5], [7, 4, 8]]
Dim $b = [ $a[0][0], $a[0][1], $a[0][2] ]
_ArrayDisplay($b)

Код:
#include <Array.au3>
; вариант 2 - динамическое добавление
Dim $a[2][3] = [[1, 2, 5], [7, 4, 8]]
Dim $b[0]
For $i = 0 To UBound($a, 1)
    ReDim $b[UBound($b) + 1]
    $b[UBound($b) - 1] = $a[0][$i]
Next
_ArrayDisplay($b)
 
Последнее редактирование:
Верх