Ключом к пониманию является утверждение if
:
if (f == columnas - c - 1)
Два вложенных цикла выполняют итерацию по строкам (используя f
в качестве индекса) и для каждой строки по столбцам (используя c
в качестве индекса).
Таким образом, на каждой итерации вы проверяете, равен ли номер строки (то есть f
) номеру столбца , обратному (то есть c
вычитается из общего числа столбцов - columnas
). Причина, по которой вы проверяете номер столбца в обратном направлении, заключается в том, что вы хотите добавить снизу слева вверху справа, что аналогично добавлению сверху вниз справа налево.
Следует отметить, что диагональ матрицы имеет смысл только для квадратной матрицы, что означает, что число столбцов должно быть таким же, как и количество строк (в вашем алгоритме filas
должно равняться columnas
).
Итак, предполагая матрицу 5x5:
Строка 0 (f = 0) -> Столбец 4 (c = 5 - 0 - 1)
Строка 1 (f = 1) -> столбец 3 (c = 5 - 1 - 1)
Строка 2 (f = 2) -> столбец 2 (c = 5 - 2 - 1)
Строка 3 (f = 3) -> столбец 1 (c = 5 - 3 - 1)
Строка 4 (f = 4) -> столбец 0 (c = 5 - 4 - 1)