Что нового

[Массивы] Отображения массива

MockeR

Знающий
Сообщения
101
Репутация
14
Привет всем!!!
Есть 3D массив к примеру такой:
Код:
Dim $test[2][2][2]
	$test[0][0][0] = 1
	$test[0][0][1] = 2
	$test[0][1][0] = 3
	$test[0][1][1] = 4
	$test[1][0][0] = 5
	$test[1][0][1] = 6
	$test[1][1][0] = 7
	$test[1][1][1] = 8

Как сделать чтобы каждая переменная массива отображался в мессагбоксе???

Есть такой вариант, но он только для 3 элементов :whistle:
Код:
For $sArray_1 = 0 To UBound($test) - 1
	For $sArray_2 = 0 To UBound($test, 1) - 1
		For $sArray_3 = 0 To UBound($test, 2) - 1
			MsgBox(0, "Array", $test[$sArray_1][$sArray_2][$sArray_3])
		Next
	Next
Next


Помогите написать что то в этом роде, если число элементов в массиве будет неизвестно!
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
MockeR
либо твой скрипт покажет все как надо, либо ты путаешь термин "элемент" с "размерностью"
 
Автор
M

MockeR

Знающий
Сообщения
101
Репутация
14
Kaster сказал(а):
MockeR
либо твой скрипт покажет все как надо, либо ты путаешь термин "элемент" с "размерностью"
Dim $test[2][2][2] - на сколько я понимаю 3 это количество елементов, а 2 это размерность каждого елемента елемента.
Если не прав - поправте!
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
MockeR [?]
Если не прав - поправте!
не прав, поправляю.
3 - это размерность массива, 2, 2, 2 - это кол-во элементов в каждой размерности. могло быть и 3 4 5.
 
Автор
M

MockeR

Знающий
Сообщения
101
Репутация
14
Спасибо, буду знать! :-[
А как на счет скрипта? Поможешь? :beer:
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 319
Код:
Dim $aTest[2][2][2]
$aTest[0][0][0] = 1
$aTest[0][0][1] = 2
$aTest[0][1][0] = 3
$aTest[0][1][1] = 4
$aTest[1][0][0] = 5
$aTest[1][0][1] = 6
$aTest[1][1][0] = 7
$aTest[1][1][1] = 8

For $i_1 = 0 To UBound($aTest) - 1
	For $i_2 = 0 To UBound($aTest, 2) - 1
		For $i_3 = 0 To UBound($aTest, 3) - 1
			MsgBox(0, '', $i_1 & 'x' & $i_2 & 'x' & $i_3 & ': ' & $aTest[$i_1][$i_2][$i_3])
		Next
	Next
Next
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
MockeR
твой скрипт работает. в чем проблема? теперь, когда разобрались с терминологией, можешь повторить что ты хочешь сделать?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 319
Kaster [?]
твой скрипт работает
Работает только потому, что в этом примере UBound($aTest) = UBound($aTest, 2) = UBound($aTest, 3). С таким массивом работать уже не будет:
Код:
Dim $aTest[2][3][4]
$iTest = 0
For $i_1 = 0 To UBound($aTest) - 1
	For $i_2 = 0 To UBound($aTest, 2) - 1
		For $i_3 = 0 To UBound($aTest, 3) - 1
			$iTest += 1
			$aTest[$i_1][$i_2][$i_3] = $iTest
		Next
	Next
Next
 
Автор
M

MockeR

Знающий
Сообщения
101
Репутация
14
Kaster сказал(а):
MockeR
твой скрипт работает. в чем проблема? теперь, когда разобрались с терминологией, можешь повторить что ты хочешь сделать?
Есть массив с n - размерностью. Нужно сделать чтобы каждая переменная массива отображалась по очереди мессагбоксом или тултипом!
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
madmasles
точно. не обратил внимания.


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

MockeR
если n > 3, то возможно тебе стоит круто пересмотреть свой скрипт на предмет оптимизации.
если n - может варьироваться как 2 или 3, то можно легко это выяснить тем же UBound'ом и написать отдельно под каждый свой цикл.
 
Автор
M

MockeR

Знающий
Сообщения
101
Репутация
14
Kaster сказал(а):
если n > 3, то возможно тебе стоит круто пересмотреть свой скрипт на предмет оптимизации.
на счет скрипта я знаю!!! этот скрипт всего лишь пример(и то нерабочий ;))!!!
я же и прошу помощи потому как не знаю как всё это организовать :wacko:


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

madmasles сказал(а):
Код:
Dim $aTest[2][3][4]
$iTest = 0
For $i_1 = 0 To UBound($aTest) - 1
	For $i_2 = 0 To UBound($aTest, 2) - 1
		For $i_3 = 0 To UBound($aTest, 3) - 1
			$iTest += 1
			$aTest[$i_1][$i_2][$i_3] = $iTest
		Next
	Next
Next
Спасибо, это работает. А если размерность будет больше 3?
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 472
Репутация
2 401
AZJIO
Речь идёт о 3-ёхмерном массиве, _ArrayDisplay работает только с 2-ухмерным.
 

SyDr

Сидра
Сообщения
651
Репутация
158
Пожалуйста. Во вложении решение в общем виде.
Если всё ещё нужны массивы с размерностью, превышающей 2, то следует купить медаль "слабая степень мазохизма".
Если размерность превышает 3: "средняя степень мазохизма"
Если размерность не известна: "тяжёлая степень мазохизма"
 

SyDr

Сидра
Сообщения
651
Репутация
158
AZJIO
Не вкурил в предложение :(
Автору ведь надо был вывод всех элементов массива с неизвестной размерностью.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 472
Репутация
2 401
AZJIO
Ты можешь пожалуйста цитировать то на что отвечаешь? я вообще не понял о чём ты, я кажется не писал ничего про надобность в 3D массиве.

OffTopic:
P.S
И не красиво так резко править своё сообщения, нужно об этом предупреждать.
 
Автор
M

MockeR

Знающий
Сообщения
101
Репутация
14
Спасибо всем за помощь!!!
Мне в принципе это не так уж и нужно было, просто стало интересно возможно ли такое 8)

SyDr тебе отдельный респект :laugh:
скрипт - супер :ok:
 
Автор
M

MockeR

Знающий
Сообщения
101
Репутация
14
AZJIO сказал(а):
SyDr
Для интереса хочу проверить одну мысль... мне просто не понятно зачем столько раз делать UBound, если размерности всего 3.
Размерность массива - n!!!
 
Верх