Двумерные массивы и вложенные циклы. Синтаксис C#
Двумерные массивы представляют собой таблицу. Поэтому доступ к значению, хранимому в двумерном массиве, осуществляется с указанием двух индексов, индекса строки и индекса столбца. Нумерация индексов начинается с нуля.
static void Main(string[] args)
{
string[,] arr = { { "A", "B" }, { "C", "D" } };
Console.WriteLine(arr[1,0]);
}
Здесь, инициализирован двумерный массив из двух строк, в каждой из которых два значения. Значения A и B принадлежать первой строке с индексом 0, значения С и D, находятся на второй строке, с индексом 1. С помощью arr[1,0] был получен доступ к значению «С» расположенному на второй строке в первом столбце.
Количество строк и столбцов можно указать явно. Для этого, вместо фигурных скобок, используются квадратные.
Первым параметром указывается количество строк, вторым— столбцов. Количество строк и столбцов называется размерностью массива.
static void Main(string[] args)
{
int[,] arr = new int [ 2, 3 ];
arr[0, 0] = 1;
arr[0, 1] = 2;
arr[0, 2] = 3;
arr[1, 0] = 4;
arr[1, 1] = 5;
arr[1, 2] = 6;
Console.WriteLine(arr[1,0]);
}
Здесь, инициализирован массив из двух строк и трех столбцов. Присвоение значения происходит по двум индексам. Индексу строки и индексу столбца. Доступ получен к находящемуся во второй строке первому элементу.
Для операций над двумерными массивами, перебор элементов осуществляется с помощью вложенных циклов, где внешний цикл перебирает строки, а внутренний перебирает значения в столбце.
Так же, как и в одномерном массиве, для перебора в цикле нужно знать размерность массива, но в отличии от одномерного, в двумерном, размерности две. Одна — количество строк, вторая количество — столбцов. Свойство Length для этих целей не подходит, так как предназначено для подсчета количества всех элементов массива вне зависимости от того, как они хранятся.
static void Main(string[] args)
{
int[,] arr = new int[2, 3];
arr[0, 0] = 1;
arr[0, 1] = 2;
arr[0, 2] = 3;
arr[1, 0] = 4;
arr[1, 1] = 5;
arr[1, 2] = 6;
Console.WriteLine(arr.Length);
}
Для нахождения размерностей строк и столбцов используется метод — GetLength(), в скобки которого помещают значения размерности, для строк это число 0, для столбцов 1.
static void Main(string[] args)
{
int[,] arr = new int[2, 3];
arr[0, 0] = 1;
arr[0, 1] = 2;
arr[0, 2] = 3;
arr[1, 0] = 4;
arr[1, 1] = 5;
arr[1, 2] = 6;
// Перебор строк:
for (int i = 0; i < arr.GetLength(0); i++)
{
// Перебор столбцов в строке:
for (int j = 0; j < arr.GetLength(1); j++)
{
Console.Write(arr[i, j] + " ");
}
// Переход к новой строке:
Console.WriteLine();
}
}
Общепринято для внешнего цикла использовать переменную «i», для внутреннего «j»
Используя генератор случайных чисел, можно избавиться ото трудоемкого ручного присвоения значений элементам массива.
static void Main(string[] args)
{
int[,] arr = new int[2, 3];
Random rnd = new Random();
int value = rnd.Next(0, 10);
for (int i = 0; i < arr.GetLength(0); i++)
{
// Перебор столбцов в строке:
for (int j = 0; j < arr.GetLength(1); j++)
{
arr[i,j] = rnd.Next(0, 10);
Console.Write(arr[i, j] + " ");
}
// Переход к новой строке:
Console.WriteLine();
}
}
Помимо обработки данных, содержащихся в двумерных массивах, вложенные циклы применяются для обработки различных таблиц
К примеру, таблица умножения
static void Main(string[] args)
{
for (int i = 1; i < 10; i++)
{
for (int j = 1; j < 10; j++)
{
Console.Write($"{i * j} \t");
}
Console.WriteLine();
}
}
Здесь, « \t » управляющий символ, литерал, аналог клавиши Tab, используемый для выравнивания текста.
В заключении.
Двумерный массив — массив таблица. Доступ к единичному значению в таком массиве осуществляется по двум индексам — индекс строки и индекс столбца.
Для обработки всех значений двумерного массива используется конструкция вложенного цикла, где внешний цикл производит итерации надстройками, а внутренний над столбцами Конечное значение счетчика размерности строки и столбца определяется методом GetLength().
На этом занятие закончено.
Вы можете самостоятельно найти задачи для закрепления теоретического материала или для получения задач с ответами отправьте письмо на basicprog@mail.ru
Удачи в выполнении практических заданий!