Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
5fan_ru_Уровни языков программирования. Язык C#...doc
Скачиваний:
4
Добавлен:
01.07.2025
Размер:
352 Кб
Скачать
☆

Многомерные массивы

Многомерный массив — это объект, в котором для осуществления доступа к его элементам используется несколько индексов.

Двумерный массив объявляется следующим образом:

<базовыйТип>[,] <имя>;

Описания массивов с большим числом размерностей требуют больше запятых.

Для многомерных массивов используется аналогичный одномерным синтаксис, в котором размерности отделяются одна от другой запятыми.

double[,] hillHeight = new double [3,4];

Console.WriteLine(hillHeight[0,0]);

Многомерные массивы также можно инициализировать константами. Для этого необходимо использовать вложенные блоки, взятыми в фигурные скобки и разделенными запятыми. Например:

double[,] hillHeight = new {{1, 2, 3, 4 }, {2, 3, 4, 5 }, {3, 4, 5, 6}};

Для обработки элементов многомерного массива необходимо изменять каждый из индексов. Поэтому при работе с многомерными массивами постоянно приходится использовать вложенные циклы.

for (int i = 0; i < 3; i++)

{

for (int j = 0; j < 10; j++)

{

a[i,j]=j;

}

}

Типы задач обработки двумерных числовых массивов

Обработка двумерных массивов по строкам

Обработка двумерных массивов по столбцам

Удаление строк или столбцов двумерного массива

Вставка строк или столбцов в двумерный массив

Квадратные матрицы и их обработка

Невыровненные (ступенчатые) массивы

Многомерные массивы, обсуждавшиеся в предшествующем разделе, обычно называются прямоугольными, поскольку у них каждая "строка" имеет один и тот же размер.

Однако существует возможность использовать ступенчатые (невыровненные) массивы, у которых "строки" могут быть неодинакового размера. Для этого требуется массив, каждым элементом которого также является массив. При желании можно использовать массивы массивов массивов и даже более сложные конструкции. Однако это оказывается возможным только в том случае, если все массивы имеют один и тот же базовый тип.

Синтаксис, применяемый для объявления массивов массивов, подразумевает использование в объявлении массива нескольких пар квадратных скобок, например:

int[][] sArray;

К сожалению, инициализация подобных массивов оказывается не таким простым делом, как инициализация многомерных массивов.

Можно сначала инициализировать массив, содержащий другие массивы (чтобы избежать путаницы, мы будем называть вложенные массивы подмассивами), а затем, в свою очередь, инициализировать эти подмассивы:

sArray - new int[2][];

sArray [0] = new int[3];

sArray [1] = new int[4];

Для таких неоднородных массивов можно использовать циклы foreach, однако чаще всего вложенные циклы применяются для того, чтобы получить доступ к реальным данным. Например, допустим, что имеется следующий неоднородный массив, который включает в себя десять других массивов, каждый из которых содержит целые значения, являющиеся делителями целых чисел из диапазона от 1 до 10:

int[][] divisorslTol0 = {new int[] {1},

new int[] {1, 2},

new int[] {1, 3},

new int[] {1, 2, 4},

new int[] {1, 5},

new int[] {1, 2, 3, 6},

new int[] {1, 7},

new int[] {1, 2, 4, 8},

new int[] {1, 3, 9},

new int[] {1, 2, 5, 10}};

Поэтому нам придется проходить не только по самому массиву, но и непосредственно по каждому подмассиву:

foreach (int[] divisors in divisorslTol0)

foreach (int divisor in divisors)

{

Console.WriteLine(divisor);

}