C/C++

Помогите решить задачу на С++

Найти сумму элементов квадратной матрицы, находящихся по периметру этой матрицы и сумму элементов на ее диагоналях. Если первая сумма больше второй, то каждый отрицательный элемент заменить модулем этого же элемента.
#include <iostream>
#include <ctime>
using namespace std;
int main()
{
srand(time(NULL));
int N;
do
{
cout << "Введите размер матрицы: ";
cin >> N;
}while(N<=0);
int ** A = new int *[N];
for(int x = 0; x < N; x++) A[x] = new int[N];

int sump = 0, sumd = 0;
for(int x = 0; x < N; x++)
{
for(int y = 0; y < N; y++)
{
A[x][y] = rand() % 21 - 10;
cout << A[x][y] << '\t';

if(x == 0 || x == N - 1) sump += A[x][y];
else if(y == 0 || y == N - 1) sump += A[x][y];

if(x == y) sumd += A[x][y];
else if(x == N - 1 - y) sumd += A[x][y];
}
cout << endl;
}
cout << endl;

cout << "Сумма по периметру равна " << sump << '.' << endl;
cout << "Сумма по диагоналям равна " << sumd << '.' << endl;

if(sump > sumd)
{
cout << endl;
for(int x = 0; x < N; x++)
{
for(int y = 0; y < N; y++)
{
if(A[x][y] < 0) A[x][y] *= -1;
cout << A[x][y] << '\t';
}
cout << endl;
}
}

if(A == NULL) return 1;
else
{
for(int x = 0; x < N; x++)
{
if(A[x] == NULL) return 1;
else
{
delete [] A[x];
A[x] = NULL;
}
}
delete [] A;
A = NULL;
}
return 0;
}
BI
Bektur Isakov
77 019
Лучший ответ