Всем Хай! Я надеюсь, вы попрактиковались в одномерных массивах. Как я в этой статье. Потому, что мы начинаем изучать многомерные массивы. Правда, дальше двумерного массива в этом курсе мы не зайдём. Но и его хватит за глаза.
И так. Что из себя представляет двумерный массив? Как вы уже, я надеюсь, знаете, массив это объединение множество элементов по одному типу.
Одномерный массив представляет собой записанную в одну строчку данные через запятую. Каждое данное записывается в отдельную ячейку памяти в массиве. Чтобы обратиться к этой ячейки нужно знать имя массива и индекс ячейки, где хранятся данные.
int[] array = { 4, 6, 9, 11 }
Двумерный массив
Так вот если одномерный массив это полка, то двумерный массив это стеллаж. Если в одномерном массиве нужно знать один индекс, чтобы узнать информацию. То в двумерном массиве нужно два индекса. Номер строки и номер столбца.
Так выглядит двумерный массив.
int[,] array = { { 1,8,7 }, { 2,3,4 }, { 3,5,6 } }
На первый взгляд может показаться, что будут сложности с определением индексов у ячеек с информацией. А если я его запишу немного иначе?
int[,] array =
{
{ 1,8,7 },
{ 2,3,4 },
{ 3,5,6 }
}
Теперь, я думаю понятно, почему двумерный массив можно назвать стеллажом. Сразу видно, где какая строчка, а где столбец. Здесь тоже отсчёт индексов начинается с 0. Сверху вниз. Слева направо.
- Допустим, цифра 4 находится по такому адресу - array[1,2]
- А цифра 5 по такому - array[2,1]
И так далее.
В целом тоже ничего сложного. Просто чуть больше циферок и между квадратными скобками стоит запятая.
Работа с двумерным массивом
Рассмотрим, как работать с таким массивом в коде.
int[,] array = { { 1,8,7 }, { 2,3,4 }, { 3,5,6 } };
for(int i = 0; i < array.GetLength(0); i++)
{
for (int j = 0; j < array.GetLength(1); j++)
{
Console.Write(array[i,j] + " ");
}
Console.WriteLine();
Чтобы вывести значения массива в консоли, нам понадобится запустить два цикла. Один для перебора строчки. А в нутрии него перебор по столбцам. В отличие от одномерного массива с одним циклом.
В первом цикле для перебора строк мы использовали переменную «i», а во втором для перебора столбцов переменную «j».
И ещё важное отличие. При вычислении длины одномерного массива мы использовали «Length». То есть запись была такой: «array.Length»
Здесь это уже не подходит. Нужно использовать «GetLength». Причём для внешнего цикла мы добавляем 0 - «array.GetLength(0)». А для внутреннего 1 – «array.GetLength(1)».
Заметили, что во внешнем цикле стоит пустой вывод в консоль «Console.WriteLine()»? Он используется просто для переноса каждой строчки массива на новую строчку в консоли. Чтобы при выводе массива в консоли это смотрелось красивей, а не в одну строчку.
Также этот массив мы можем заполнить позже в коде. А вначале только его объявить и указать, сколько будет строк и столбцов.
int[,] array = new int[3, 3]
Давайте посмотрим код ниже с рандомным заполнением такого массива.
Random rand = new Random();
int[,] array = new int[3, 3];
for(int i = 0; i < array.GetLength(0); i++)
{
for (int j = 0; j < array.GetLength(1); j++)
{
array[i, j] = rand.Next(0, 9);
Console.Write(array[i,j] + " ");
}
Console.WriteLine();
}
Всё также как с первой записью. Только здесь мы объявляем рандом и указываем внутри внутреннего цикла, какими цифрами хотим его забить «array[i, j] = rand.Next(0, 9)».
В принципе, с двумерным массивом всё. В следующей статье будет практика. Если с одномерным массивом мы делали программку для брони столиков. То с двумерным массивом будем делать программку для библиотеки. Так что не пропустите и подпишитесь на канал. Ну а вопросы вы знаете куда писать (в комментарии). Ну а я с вами прощаюсь и пойду писать эту программку. Всем пока!
#it #разработкаигр #программированиеснуля #программированиедляначинающих #какстатьпрограммистом #csharp #сишарп