Требуется помощь с ступенчатыми массивами. {C#}[Решено]
| |
Amri | Дата: Суббота, 05 Октября 2013, 15:47 | Сообщение # 1 |
Auriss IGD
Сейчас нет на сайте
| Доступно только для пользователей
Сообщение отредактировал Amri - Понедельник, 07 Октября 2013, 23:07 |
|
| |
pelmenka | Дата: Суббота, 05 Октября 2013, 16:24 | Сообщение # 2 |
Драгоценный Тунеядец
Сейчас нет на сайте
| Цитата (Amri) int[] [,] massiv= new int [5] [,] ; Amri, это в шарпе такие массивы?
Сталина в каждый дом!
|
|
| |
Amri | Дата: Суббота, 05 Октября 2013, 20:08 | Сообщение # 3 |
Auriss IGD
Сейчас нет на сайте
| pelmenka, это массив массивов.
массив обьявляется так это простой Код type [,.....,] massiv_name = new typo [,....,] а массив массивов - так, так сверху. Это частный случайДобавлено (05.10.2013, 20:08) --------------------------------------------- Никто не знает?
|
|
| |
vasua99 | Дата: Суббота, 05 Октября 2013, 22:29 | Сообщение # 4 |
GNU follower
Сейчас нет на сайте
| Я далеко не специалист, но не так?
Код int[][,] array = new int[5][,] ;
// бла-бла-бла
for (int r = 0; r < array[i].GetLength (0); r++) { for (int j = 0; j < array[i].GetLength (1); j++) { int a = array[i][r, j]; switch(a) { case 1: .... break; case 2: .... break; case N: .... break; } } }
Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
|
|
| |
Amri | Дата: Воскресенье, 06 Октября 2013, 18:29 | Сообщение # 5 |
Auriss IGD
Сейчас нет на сайте
| Доступно только для пользователей
Сообщение отредактировал Amri - Понедельник, 07 Октября 2013, 23:07 |
|
| |
vasua99 | Дата: Воскресенье, 06 Октября 2013, 23:52 | Сообщение # 6 |
GNU follower
Сейчас нет на сайте
| Цитата vasua99, а - это не номер искомого массива, а номер элемента в массиве. Короче, в массивах я держу локации. Так вот, а обозначает, что отрисовывается на этот месте. Так что не катит ( . И да, вот эти строчки Цитата (vasua99) for (int r = 0; r < array[i].GetLength (0); r++) { for (int j = 0; j < array[i].GetLength (1); j++) {
Можно сделать преобразование в перечесление;
Код enum Map { Main = 0, Two = 1, .... }; .... switch (a.getID ()) { case Map.Main: .... break; case Map.Two: .... break; case N: .... break; }
Насчет твоего вопроса, я как понял ты в массиве массивов хочешь прочитать конкретный массив(например array[i][1, j] (где r и и j любые числа(которые используются в циклах) )
Может так?
Код
//.... int[][,] array = new int[5][,] ;
// бла-бла-бла
boolean isOnlyOne = true; for (int i = 0; i < array.GetLength(0); i++ ) { for (int r = 0; r < array[i].GetLength (0); r++) { for (int j = 0; j < array[i].GetLength (1); j++) { int a = array[i][r, j]; switch(a.getID ()) { case Map.Main: .... break; case Map.Two: .... break; case N: .... break; } } } if (isOnlyOne) break; } ?
Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
Сообщение отредактировал vasua99 - Воскресенье, 06 Октября 2013, 23:54 |
|
| |
Amri | Дата: Понедельник, 07 Октября 2013, 10:53 | Сообщение # 7 |
Auriss IGD
Сейчас нет на сайте
| Доступно только для пользователей
Сообщение отредактировал Amri - Понедельник, 07 Октября 2013, 23:08 |
|
| |
vasua99 | Дата: Понедельник, 07 Октября 2013, 16:43 | Сообщение # 8 |
GNU follower
Сейчас нет на сайте
| Цитата (Amri) vasua99, и а модифицировать нельзя, потому как придется переписывать весь класс. Это элемент списка текстур.
А если не модифицировать, а допустим применить Адаптер?
И насчет считать отдельный массив, так тогда наверное.
Код boolean isOnlyOne; // считать один массив или все. for (int i = 0; i < massiv.GetLength(0); i++ ) //обработка массива массивов { if (isOnlyOne) break; }
Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
Сообщение отредактировал vasua99 - Понедельник, 07 Октября 2013, 16:46 |
|
| |
Amri | Дата: Понедельник, 07 Октября 2013, 22:58 | Сообщение # 9 |
Auriss IGD
Сейчас нет на сайте
| Доступно только для пользователей
Сообщение отредактировал Amri - Понедельник, 07 Октября 2013, 23:09 |
|
| |
vasua99 | Дата: Понедельник, 07 Октября 2013, 23:45 | Сообщение # 10 |
GNU follower
Сейчас нет на сайте
| Цитата (Amri) if (massiv_numer < array.GetLength(0))) { int i = massiv_numer; //тут условие изменения переменной massiv_numer
if (//условие выполнено для первого , точнее второго массива) massiv_numer=1; if (//условие для третьего массива) massiv_numer= 2; if (//и наконец для четвертого)) massiv_numer= 3; //и так для нужного количества массивов. //а дальше уже обработка выбранного массива [/C#]
Тогда уж Код if (massiv_numer < array.GetLength(0))) { int i = massiv_numer; //тут условие изменения переменной massiv_numer
if (//условие выполнено для первого , точнее второго массива) // главное расположить наиболее вероятные варианты первыми massiv_numer=1; else if (//условие для третьего массива) massiv_numer= 2; else if (//и наконец для четвертого)) massiv_numer= 3; //и так для нужного количества массивов. //а дальше уже обработка выбранного массива побыстрее будет работать Добавлено (07.10.2013, 23:37) --------------------------------------------- и еще, если просишь помощи, советую пользоваться тегами
Удачи!):)Добавлено (07.10.2013, 23:45) --------------------------------------------- И кстати, break в for все таки работает.
А еще можно так(чую тухлые помидоры) Код
//.... int[][,] array = new int[5][,] ;
// бла-бла-бла
boolean isOnlyOne = true; for (int i = 0; i < array.GetLength(0); i++ ) { for (int r = 0; r < array[i].GetLength (0); r++) { for (int j = 0; j < array[i].GetLength (1); j++) { int a = array[i][r, j];
switch(a.getID ()) { case Map.Main: .... break; case Map.Two: .... break; case N: .... break; } } } if (isOnlyOne) goto Out; } Out:
Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
|
|
| |
Amri | Дата: Вторник, 08 Октября 2013, 00:36 | Сообщение # 11 |
Auriss IGD
Сейчас нет на сайте
| vasua99, тут я ошибся) условие изменения номера искомого массива не тут Цитата (vasua99) if (massiv_numer < array.GetLength(0))) { int i = massiv_numer; //тут условие изменения переменной massiv_numer а в самих ифах) это я замотался и обрадовался) то если после присвоение стоят только иф. . Т Е так [C#] if (massiv_numer < array.GetLength(0))) { int i = massiv_numer;
if (//условие выполнено для первого , точнее второго массива) massiv_numer=1; if (//условие для третьего массива) massiv_numer= 2; if (//и наконец для четвертого)) massiv_numer= 3; //и так для нужного количества массивов. //а дальше уже обработка выбранного массива [/C#] ) и да, у меня не случайные переключения, а по определенному действию) они все будут использоваться. Для теста я сделал на нажатие нумпада. И работает однако)
Цитата (vasua99) и еще, если просишь помощи, советую пользоваться тегами они меня бесят) тут нет тега под шарп-код Добавлено (07.10.2013, 23:51) --------------------------------------------- vasua99, Цитата (vasua99) еще можно так(чую тухлые помидоры) они будут) ну что ты к этой а прицепился? Нужно же было цепляться как раз к i. Эта скотина и есть номер искомого массива Добавлено (08.10.2013, 00:35) ---------------------------------------------
Цитата (vasua99) И кстати, break в for все таки работает. как ни странно, но работает. Но либо первый, либо все. У меня так получилось. Однако в спецификации это не описано Добавлено (08.10.2013, 00:36) ---------------------------------------------
Цитата (vasua99) А еще можно так(чую тухлые помидоры) и еще потому, что писать в этом случае надо больше. А мне лень
|
|
| |
vasua99 | Дата: Вторник, 08 Октября 2013, 00:44 | Сообщение # 12 |
GNU follower
Сейчас нет на сайте
| Цитата (Amri) Цитата (vasua99) И кстати, break в for все таки работает.
как ни странно, но работает. Но либо первый, либо все. У меня так получилось. Однако в спецификации это не описано dry
Странно, но в MSDN это есть) break(MSDN)
Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
|
|
| |
Amri | Дата: Вторник, 08 Октября 2013, 00:57 | Сообщение # 13 |
Auriss IGD
Сейчас нет на сайте
| vasua99, оно то есть. Я это видел) . Блин, как же это я не заметил это вот тут? [url=http://msdn.microsoft.com/ru-ru/library/ch45axte.aspx][/url]
Сообщение отредактировал Amri - Вторник, 08 Октября 2013, 01:00 |
|
| |
|