В чем ошибка при анализе диагоналей матрицы
Вот код, он обходит все диагонали матрицы начиная с крайнего левого элемента. Написал код, но он почему то работает только для матриц не более чем 3х3, в чем ошибка?
#include <iostream>
#include <ctime>
#include <cstddef>
using namespace std;
int* second(int** matrix, int size) {
int* new_matrix = new int[size * size];
int count = 0;
int sup_var_1 = 0;
int sup_var_2 = 0;
for (int i = 0; i <= size - 1; i++) {
sup_var_1 = 0;
new_matrix[count] = matrix[sup_var_1][i];
count++;
for (int j = size - i; j < size; j++) {
sup_var_1++;
new_matrix[count] = matrix[sup_var_1][size - j - 1];
count++;
}
}
for (int i = 1; i <= size - 1; i++) {
sup_var_2 = size - 1;
new_matrix[count] = matrix[i][sup_var_2];
count++;
for (int j = 1; j < size - 1; j++) {
sup_var_2++;
new_matrix[count] = matrix[sup_var_2 - 1][j];
count++;
}
}
return new_matrix;
}
int main() {
//srand ( time(NULL) );
int** arr;
int col = 4;
int row = 4;
arr = new int* [col];
for (int i = 0; i < row; i++) {
arr[i] = new int[col];
}
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
arr[i][j] = ((rand() % 9));
}
}
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
cout << " " << arr[i][j];
}
cout << endl;
}
/*for (int i = 0; i < col; i ++) {
delete [] arr[i];
}
delete [] arr;*/
int* new_arr = new int[row];
new_arr = second(arr, col);
cout << endl;
/*cout << "Правые диагонали матрицы: " << endl;
for (int i=0; i < col * row; i++) {
cout << " " << new_arr[i];
}*/
cout << "Левые диагонали матрицы: " << endl;
for (int i = 0; i < col * row; i++) {
cout << " " << new_arr[i];
}
}