| 
				
				Требуется помощь с ступенчатыми массивами. {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  |  
| 
 | 
 |    |     
		
		 
 |