Как заполнить массив циклом

Нужно заполнить массив таким образом(сформировать квадратную матрицу):

11111
22222
33333
44444
55555

Не могу сообразить как мне обратиться только к строке или только к столбцу.


Ответы (1 шт):

Автор решения: Вадим Ахматов

Можно использовать двумерный массив, тогда обращаетесь к конкретной ячейке:

var array1 = new int[,] { {1, 1 }, {2, 2} }; //Явное заполнение массива
var array2 = new int[2,2]; //массив пустой

var answer = array1[1,1]; //Ответ 2

В таком случае получается матрица произвольного размера.

Заполнить такой массив можно следующим образом:

for(int i = 0; i < arrayColumns; i++)
    for(int j = 0; j < arrayRows; j++)
        array[i,j] = ...

Обратиться же к строке/столбцу нельзя, т.к. в памяти данные массива все равно расположены в одну строку, и обращаясь по индексу [i, j] вы по сути находите элемент номер j в последовательности под номером i

Пример:

Имея массив var arr[3,3] = new int{{0, 1, 2}, {3, 4, 5}, {6, 7, 8}} для машины он будет выглядеть так: 0, 1, 2, 3, 4, 5, 6, 7, 8. Обратившись к элементу [1, 2] вы от самого первого символа отсчитаете 1*3 элементов(потому что длина каждой строки = 3), а затем еще 2 элемента и получите в ответе 4.

→ Ссылка