Как напечатать одну сторону диагонали массива?

Предположим, что у нас есть 5 X 5 случайных массивов
1 2 3 7 8
4 7 3 6 5
2 9 8 4 2
2 9 5 4 7
3 7 1 9 8
Теперь я хочу напечатать правую часть диагонали, показанной выше, вместе с элементами в диагонали, например
---------- 8
-------- 6 5
------ 8 4 2
--- 9 5 4 7
3 7 1 9 8
Код, который я написал,

#include <iostream>
#include <time.h>


using namespace std;

int main(){
    int rows, columns;

    cout << "Enter rows: ";
    cin >> rows;
    cout << "Enter colums: ";
    cin >> columns;

    int **array = new int *[rows]; // generating a random array
    for(int i = 0; i < rows; i++)
        array[i] = new int[columns];

    srand((unsigned int)time(NULL)); // random values to array

    for(int i = 0; i < rows; i++){        // loop for generating a random array
        for(int j = 0; j < columns; j++){
            array[i][j] = rand() % 10;    // range of randoms
            cout << array[i][j] << " "; 
        }
        cout << "
";
    }

    cout << "For finding Max: " << endl;

    for(int i = 0; i < rows; i++){//loop for the elements on the left of
        for(int j = columns; j > i; j--){//diagonal including the diagonal
             cout << array[i][j] << " "; 
        }
        cout << "
";
    }
    cout << "For finding Min: " << endl;

    for(int i = rows; i >= 0; i++){           //loop for the lower side of 
        for(int j = 0; j < i - columns; j++){ //the diagonal
            cout << array[i][j] << " "; 
        }
        cout << "
";
    }
    return 0;
}

После запуска кода форма, которую я получаю, верна, но элементы не соответствуют основному массиву. Я понятия не имею, в чем проблема.

Всего 1 ответ


Левая сторона:

for (size_t i = 0; i < rows; i++) {
    for(size_t j = 0; j < columns - i; j++) {
         cout << array[i][j] << " "; 
    }
    cout << "
";
}

Правая сторона:

for (size_t i = 0; i < rows; i++) {
    for (size_t j = 0; j < columns; j++) {
        if (j < columns - i - 1) cout << "- ";
        else cout << vec[i][j] << " ";
    }
    cout << "
";
}

Есть идеи?

10000