Что нового

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

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
Репутация
623
MockeR
либо твой скрипт покажет все как надо, либо ты путаешь термин "элемент" с "размерностью"
 
Автор
M

MockeR

Знающий
Сообщения
101
Репутация
14
Kaster сказал(а):
MockeR
либо твой скрипт покажет все как надо, либо ты путаешь термин "элемент" с "размерностью"

Dim $test[2][2][2] - на сколько я понимаю 3 это количество елементов, а 2 это размерность каждого елемента елемента.
Если не прав - поправте!
 

kaster

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

MockeR

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

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,320
Код:
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
Репутация
623
MockeR
твой скрипт работает. в чем проблема? теперь, когда разобрались с терминологией, можешь повторить что ты хочешь сделать?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,320
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
Репутация
623
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,669
Репутация
2,463
AZJIO
Речь идёт о 3-ёхмерном массиве, _ArrayDisplay работает только с 2-ухмерным.
 

SyDr

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

SyDr

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

CreatoR

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

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

MockeR

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

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

MockeR

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