Сейчас 12:40:14 Понедельник, 25 ноября, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
[Вопрос] vJass и двумерный массив
Ty3uKДата: Пятница, 03 Февраля 2012, 09:45:32 | Сообщение # 1
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Сабж- как с помощью vjass сделать массив двумерным?

Добавлено (03 Февраль 2012, 09:45:32)
---------------------------------------------
Прошу прощения, нашел ответ на хгм.

Code
integer array test[8192][8192]
является двумерным?


╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

lawsonДата: Пятница, 03 Февраля 2012, 11:28:46 | Сообщение # 2
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (Ty3uK)
как с помощью vjass сделать массив двумерным

Используй динамические массивы.
type array1 extends integer array[5]
type array2 extends array1 array[5]

local array2 a = array2.create()

set a[1] = array1.create()

set a[1][0] = number


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!


Сообщение отредактировал lawson - Пятница, 03 Февраля 2012, 11:29:53
 

SirNikolasДата: Пятница, 03 Февраля 2012, 13:08:12 | Сообщение # 3
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Quote (Ty3uK)
integer array test[8192][8192]
Не совсем. Максимальное количество элементов (произведение индексов) не может превышать 409550.

Добавлено (03 Февраль 2012, 13:08:12)
---------------------------------------------

Quote (lawson)
type array1 extends integer array[5]
type array2 extends array1 array[5]
Тоже интересный вариант.


 

Ty3uKДата: Пятница, 03 Февраля 2012, 13:08:13 | Сообщение # 4
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
SirNikolas, как же тогда его реализовать?

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

SirNikolasДата: Пятница, 03 Февраля 2012, 13:09:44 | Сообщение # 5
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Писать индексы чуть меньше, чем 8192 * 8192. :D

 

Ty3uKДата: Пятница, 03 Февраля 2012, 13:16:06 | Сообщение # 6
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
SirNikolas, угу, [639][639]. А все-таки? Способа нет?

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

SirNikolasДата: Пятница, 03 Февраля 2012, 13:34:15 | Сообщение # 7
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Как нет? Ты же сам написал его в первом посте.
Code
globals
     integer array test[20][10]
endglobals

function abc takes integer x, integer y, integer value returns nothing
     set test[x][y] = value
endfunction

function def takes integer x, integer y returns integer
     return test[x][y]
endfunction


 

DragoNДата: Пятница, 03 Февраля 2012, 22:41:28 | Сообщение # 8
Инквизитор
Группа: Стримеры
Сообщений: 4348
Награды: 7
Репутация: 2776
Блокировки:
this

El Psy Congroo
 

FatalBladeДата: Суббота, 04 Февраля 2012, 01:09:01 | Сообщение # 9
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
А как вам такой вариант двумерного массива?
Например наш массив реальных назовём Array. Дадим ему индекс (интежер) = Index, но этот индекс тоже сделаем массивом, и создадим ещё 1 переменную, тоже интежер, назовём её N. Что же получается? Например что бы обратиться к какой то ячейке, нам нужно написать:
set real = Array[Index[N]].
Это не двухмерный массив на самом деле, потому что Index[N] - это единая ячейка массива, ведь это тоже целочисленное значение, но всё равно, для удобства пользователя это может вполне заменить двумерный массив.


 

SirNikolasДата: Суббота, 04 Февраля 2012, 14:19:20 | Сообщение # 10
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Это не двумерный массив.
Code
set a[0][1] = 2
set a[1][1] = 3
call BJDebugMsg(I2S(a[0][1]) + " " + I2S(a[1][1]))
Code
set b[0] = 0
set b[1] = 0
set a[b[0]] = 2
set a[b[1]] = 3
call BJDebugMsg(I2S(a[b[0]]) + " " + I2S(a[b[1]]))
Выдаст совершенно не то, что нужно.


 

DreiiДата: Суббота, 04 Февраля 2012, 14:23:00 | Сообщение # 11
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
Quote (SirNikolas)
set b[1] = 0

=1 может так?


 

SirNikolasДата: Суббота, 04 Февраля 2012, 15:09:11 | Сообщение # 12
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Не знаю. Я слабо понял, что имел в виду FatalBlade. Вообще можно расписать двумерный массив как одномерный:
Code
set a[x * WIDTH + y] = value


 

  • Страница 1 из 1
  • 1
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz