C/C++

Помогите с c++ пожалуйста

В массиве A(N;N) вычислить сумму обеих диагоналей. Вывести значения этих сумм и массивов
#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

int main()
{
const int N = 5;
int A[N][N];
srand(time(NULL));
// генерация массива
for (int x = 0; x < N; x++)
{
for(int y = 0; y < N; y++)
{
A[x][y] = rand() % 17;
cout << A[x][y] << '\t';
}
cout << endl;
}

// нахождение суммы
int sum = 0;
int diag1 = 0, diag2 = 0;
for(int x = 0; x < N; x++)
{
diag1 += A[x][x];
diag2 += A[x][N - 1 - x];
}
sum = diag1 + diag2;
// Если N -- нечётное, то при нахождении суммы
// один элемент повторяется дважды.

cout << sum << endl;

return 0;
}
ИР
Игорь Рудик
76 078
Лучший ответ
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>
using namespace std;
int main() {
srand(unsigned(time(nullptr)));
const auto len = 5U;
int matrix[len][len];
for (auto& row : matrix) {
for (auto& value : row) {
value = 1 + rand() % 9;
}
}
for (auto& row : matrix) {
for (auto& value : row) {
cout << setw(2) << value;
}
puts("");
}
puts("");
auto sum = 0;
auto last = len - 1;
for (auto i = 0U; i <= last; ++i) {
sum += matrix[i][i] + matrix[i][last - i];
}
auto mid = len >> 1;
sum -= len & 1? matrix[mid][mid] : 0;
cout << " Sum: " << sum << '\n';
system("pause > nul");
}