Печать 2D массива по диагонали справа вниз - PullRequest
0 голосов
/ 03 ноября 2019

Пытаясь напечатать 2D-массив по диагонали, двигаясь вправо-вниз, другие решения, которые я нашел, идут в противоположном направлении

Пример того, чего я пытаюсь достичь:

Ввод:

0 1 2 3
1 2 3 4
2 3 4 5
3 4 5 6

Предполагаемый выход:

0 2 4 6
1 3 5
2 4
3

(и другая сторона 1 3 5, 2 4, 3)

Управляетсячтобы напечатать диагональ с

for (x=0; x<12; x++) {
    printf("%d ", arr[x][x])
}

Но не знаете, как повторить ее для нескольких, следующая попытка неверна

for (x=0; x<12; x++) {
    for (y=0;y<x+1;y++) {
        printf("%d ", arr[x][y]);
    }
    printf("\n");
}

1 Ответ

0 голосов
/ 03 ноября 2019

Следующая программа на C отвечает вашим требованиям. Попытайтесь понять индексирование.

int n, i, j, k;
int arr[5][5] = {
        0, 1, 2, 3, 4,
        1, 2, 3, 4, 5,
        2, 3, 4, 5, 6,
        3, 4, 5, 6, 7,
        4, 5, 6, 7, 8
};
n = 5;
for (k = 0; k < n; k++) {
    int ind = 0;
    for (i = k; i < n; i++) {
        printf("%d ", arr[i][ind++]);
    }
    printf("\n");
}

Вывод следующей программы:

0 2 4 6 8 
1 3 5 7 
2 4 6 
3 5 
4 

Вы можете изменить размер массива и изменить значение n, оно будет работать для вашегожелаемый массив n * n.

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