Двумерный массив. Матрицу A(m, n) заполнить следующим образом. Для заданных k и l элементу аkl присвоить значение 1; элементам, окаймляющим его (соседним с ним по вертикали, горизонтали и диагоналям) — значение 2; элементам следующего окаймления — значение 3 и так далее до заполнения всей матрицы. Алгоритм не изменится, если координаты элемента (несуществующего) k и l находятся за пределами матрицы. C#
Answers & Comments
Verified answer
Вот пример того, как вы можете реализовать это на C# с использованием вложенных циклов for:
int m = 10;
int n = 15;
int k = 5;
int l = 7;
int[,] A = new int[m, n];
for (int distance = 1; distance < Math.Max(m, n); distance++)
{
for (int i = -distance; i <= distance; i++)
{
for (int j = -distance; j <= distance; j++)
{
if (Math.Abs(i) != distance && Math.Abs(j) != distance) continue;
int x = k + i;
int y = l + j;
if (x < 0 || x >= m || y < 0 || y >= n) continue;
A[x, y] = distance + 1;
}
}
}
A[k,l] = 1;
Это заполнит массив указанными значениями. В данном примере используются переменные k,l, которые вы предоставили. Внешний цикл будет итерироваться через каждое "расстояние" от центральной точки (k, l), средний цикл будет итерироваться через строки, а самый внутренний цикл будет итерироваться через столбцы. Затем проверяется находится ли элемент за пределами матрицы, если это так, то пропускается, затем назначает значение элементу.
Важно отметить, что эта реализация предполагает, что m, n — положительные целые числа, большие нуля.