Многомерные массивы имеют более одного измерения. Чаще всего используются двумерные массивы, которые представляют собой таблицы.
Замечание. Работу с другими видами многомерных массивов рассмотрите самостоятельно.
Каждый элемент массива имеет два индекса, первый определяет номер строки, второй – номер столбца, на пересечении которых находится элемент. Нумерация строк и столбцов начинается с нуля.
Объявить двумерный массив можно одним из предложенных способов:
1) базовый_тип [,] имя_массива;
Например:
Объявлена ссылка на двумерный массив целых чисел (имя ссылки а), которая в дальнейшем может быть использована: для адресации на уже существующий массив; передачи массива в метод в качестве параметра; отсроченного выделения памяти под элементы массива.
2) базовый тип [,] имя_массива = new базовый_тип [размер1, размер2];
Например
float[,] b = new float[3, 4];
|
Объявлена ссылка b на двумерный массив вещественных чисел. Выделена память для 12 элементов вещественного типа, адрес данной области памяти записан в ссылочную переменную b. Элементы массива инициализируются по умолчанию нулями.
3) базовый_тип [,] имя_массива = {{элементы 1-ой строки}, … , {элементы n-ой строки}};
Например:
int[,] c = new int[,] { { 0, 1, 2 }, { 3, 4, 5 } };
|
Объявлена ссылка на двумерный массив целых чисел. Выделена память под двумерный массив, размерность которого 2×3. Адрес этой области памяти записан в ссылочную переменную с. Значение элементов массива соответствует списку инициализации.
Обращение к элементу массива происходит с помощью индексов: указывается имя массива и, в квадратных скобках, номер строки и через запятую номер столбца, на пересечении которых находится данный элемент. Например, a[0, 0], b[2, 3], c[i, j].
Так как массив представляет собой набор элементов, объединенных общим именем, то обработка массива обычно производится с помощью вложенных циклов. Заметим также, что при обращении к свойству Length для двумерного массива мы получим общее количество элементов в массиве. Чтобы получить количество строк, нужно обратиться к методу GetLength с параметром 0. Чтобы получить количество столбцов – к методу GetLength с параметром 1.
В качестве примера рассмотрим программу, в которой сразу будем учитывать два факта: 1) двумерные массивы относятся к ссылочным типам данных; 2) двумерные массивы реализованы как объекты.
class Program
{
static void Print(int[,] a)
{
for (int i = 0; i < a.GetLength(0); i++)
{
for (int j = 0; j < a.GetLength(1); j++)
{
Console.Write("{0} ", a[i, j]);
}
Console.WriteLine();
}
}
static void Input(out int[,] a)
{
Console.Write("n= ");
int n = int.Parse(Console.ReadLine());
Console.Write("m= ");
int m = int.Parse(Console.ReadLine());
a = new int[n, m];
for (int i = 0; i < a.GetLength(0); i++)
{
for (int j = 0; j < a.GetLength(1); j++)
{
Console.Write("a[{0},{1}]= ", i, j);
a[i, j] = int.Parse(Console.ReadLine());
}
}
}
static void Change(int[,] a)
{
for (int i = 0; i < a.GetLength(0); i++)
for (int j = 0; j < a.GetLength(1); j++)
if (a[i, j] % 2 == 0)
{
a[i, j] = 0;
}
}
static void Main()
{
int[,] a;
Input(out a);
Console.WriteLine("Исходный массив:");
Print(a);
Change(a);
Console.WriteLine("Измененный массив:");
Print(a);
}
}
|
Результат работы программы:
n=2
m=3
a[0,0]=1
a[0,1]=2
a[0,2]=3
a[1,0]=4
a[1,1]=5
a[1,2]=6
Исходный массив:
1 2 3
4 5 6
Измененный массив:
1 0 3
0 5 0
|