Что нового

[Массивы] Некоторые вопросы по массиву в том числе 2D

r35p3ct

Продвинутый
Сообщения
226
Репутация
60
Всем Q!
Помогите выполнить такую задачу, требуется присвоить некоторым цифровым значениям цифровой код, думается, что с помощью массива это проще всего организовать. Тоесть есть переменная к примеру test1 у нее код 1,test2 у нее код 123 и так далее, вот нужно по названию вытащить код. Мне в голову пришло только такое решение, вбить в один массив тектовые значения, в другой цифровые и по номеру ячейки в массиве получать требуемое значение. Может как нибудь по другому, правильнее это организовать?
Код:
dim $a[2] = [1,2]
dim $b[2] = ['a','b']

Либо в один 2D массив, но что то я не пойму как его создать.
dim $a[2][2]=[1,2] ...
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
r35p3ct
OffTopic:
Темку-то можно было и поинформативнее ;)

Как мне известно, в AutoIt, нет такого типа данных как Словарь, а это именно к словарю и относится.
Да, двумерный массив оптимальней всего использовать.
Код:
#include <Array.au3>
$N = 10; Длина словаря
Local $a[2][$N]
For $i = 0 to $N - 1
   $a[0][$i] = 'Text ' & $i; Текстовая часть пары
   $a[1][$i] = $i; Цифровой индекс
Next
_ArrayDisplay($a)
 
Автор
R

r35p3ct

Продвинутый
Сообщения
226
Репутация
60
C циклом понятно, но мне нужно вручную вбить все эти значения.
Код:
#include <Array.au3>
$N = 2; Длина словаря
Local $a[2][$N]
   $a[0][$N] = ['t','s'] 
   $a[1][$N] = [1,2]

_ArrayDisplay($a)

Это естесн не работает т.к. во 2й скобке нужно видимо только 1 элемент указывать и его значения, а как вбить их все одной строкой ручками в $a[0] все строки, а в $a[1] их цифровые аналоги?
ЗЫ В справке по массивам мало инфы.
OffTopic:
Информативней заголовок придумать не смог(
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
r35p3ct [?]
C циклом понятно, но мне нужно вручную вбить все эти значения.
ну вручную так же, как и с циклом
Вариант 1
Код:
#include <Array.au3>
$N = 2
Local $a[2][$N]
$a[0][0] = 't'
$a[0][1] = 's'
$a[1][0] = 1
$a[1][1] = 2
_ArrayDisplay($a)


Вариант 2
Код:
#include <Array.au3>
$N = 2
Local $a[2][$N] =[ _
['t', 's'], _
[1, 2] _
]
_ArrayDisplay($a)



Добавлено:
Сообщение автоматически объединено:

И кстати, обрати внимание на иднексацию в первом варианте и во втором. При объявлении массива указываешь сколько элементов по каждому индексу, а при присвоении значений, учитывая что отсчет идет с нуля, старший индекс всегда имеет значение на 1 меньше. Поэтому в первом варианте объявляешь массив как 2хN, а при присвоении старший элемент по первому индексу 1, а по второму (N-1) = 1. А вот во втором вследствие явного указания значений сразу после объявления массива индексы указывать не надо. Если значения массива известные заранее второй способ предпочтительнее, т.к. короче (не считая циклов)
 
Верх