N-мерные массивы

В предыдущих страницах мы работали с одномерными массивами. Их можно визуализировать как строку значений. У каждого значения в строке есть свой порядковый номер. Иногда этого недостаточно, тогда мы можем сделать N мерные массивы. N мерные они потому, что у них индекс элемента состоит не из одного, а из N значений.

Например, двумерные массивы можно визуализировать как таблицу, тогда каждое значение будет находиться на какой-то строке в каком-то столбце. Также можно сказать, что мы создадим двумерное поле и каждый элемент будет иметь позицию по X и Y.

Для получения длины измерения можно использовать метод GetLength, который принимает номер измерения. Для двумерного массива 3×4, длина первого измерения будет равна трем, а второго четырем.

Фрагмент 1.16

int[,] map = new int[3, 3];
map[0, 0] = 1;
map[1, 0] = 1;
map[2, 0] = 1;
map[0, 1] = 1;
map[2, 1] = 1;
map[0, 2] = 1;
map[1, 2] = 1;
map[2, 2] = 1;

for(int x = 0; x < map.GetLength(0); x++)
{
    for(int y = 0;y < map.GetLength(1); y++)
    {
        Console.Write(map[x,y]);
    }

    Console.WriteLine();
}

В результате у нас будет примерно такая таблица (матрица).

111
101
111

Массивы массивов

Как я предполагаю, вы уже догадались, что в качестве типа элементов массива может быть тип массива. В таком случае мы получим массив массивов или кортеж.

Один из атрибутов N-мерных массивов – это их ровность. Т.е в каждой строке будет одинаковое количество столбцов. В случае с массивами массивов это может быть не так.

Фрагмент 1.17

string[][] street = new string[][]
{
    new string[] { "Mary", "Thomas" },
    new string[] { "Carl" },
    new string[] { "Bob", "Jhonatan", "Alex" }
};


for(int i = 0; i < street.Length; i++)
{
    Console.WriteLine($"Дома {i}:");
    for(int p = 0; p < street[i].Length; p++)
    {
        Console.WriteLine(street[i][p]);
    }
}

Если вы нашли ошибку, пожалуйста выделите её и нажмите Ctrl+Enter.


Leave a Reply

Your email address will not be published. Required fields are marked *