Матрица двумерного массива C # заполняется с использованием одного цикла for - PullRequest
0 голосов
/ 26 ноября 2018

В настоящее время я возлюсь с 2D-массивами.Я хочу, чтобы заполнить 2D массив с подсчетом.Мне удалось сделать это с помощью 2 вложенных циклов.(Это, наверное, самый простой способ сделать это правильно?)

//create count
int count = 1;

for (int row = 0; row < matrix.GetLength(0); row++)
{
    for (int col = 0; col < matrix.GetLength(0); col++)
    {
        matrix[row, col] = count++;
    }
}

Мне было просто любопытно, возможно ли заполнить этот 2D-массив, используя только один цикл for?

Я думалсделать цикл, который считает строки.Когда строки достигнут конца массива, столбец будет увеличен на 1. Это, вероятно, можно сделать, используя некоторые операторы if, if else и else, верно?

Есть ли у кого-то здесь какие-либо идеи, как это сделать?работать?

Ответы [ 2 ]

0 голосов
/ 26 ноября 2018

Вот, пожалуйста,

int[,] matrix = new int[5, 10];     
int row = matrix.GetLength(0);
int col = matrix.GetLength(1);      

for (int i = 0; i < row * col; i++)
{
    matrix[i / col , i % col] = i + 1;
}

https://dotnetfiddle.net/Lv9DvT

0 голосов
/ 26 ноября 2018

Да, конечно, вы можете.

for(int i = 0; i < matrix.GetLength(0) * matrix.GetLength(1); i++)
{
    int row = i / matrix.GetLength(1);
    int column = i % matrix.GetLength(1);

    matrix[row, column] = i;
}

Работает с массивами NxN.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...