#include <iostream>
#define COLS 5
int sumDiagonalsAndBoundaries(int matrix[][COLS], int rows, int cols) {
int sumBoundaries = 0, sumDiagonalLeft = 0, sumDiagonalRigth = 0;
for (int i = 0; i < rows; i++) {
sumDiagonalLeft += matrix[i][i];
sumDiagonalRigth += matrix[i][cols - i - 1];
for (int j = 0; j < COLS; j++) {
if (i == 0 || j == 0 || i == rows - 1 || j == cols - 1) {
sumBoundaries += matrix[i][j];
}
}
}
std::cout << "sumBoundaries = " << sumBoundaries << "\n";
std::cout <<"sumDiagonalLeft = " << sumDiagonalLeft << "\n";
std::cout << "sumDiagonalRigth = " << sumDiagonalRigth << "\n";
return sumBoundaries + sumDiagonalLeft + sumDiagonalRigth;
}
int main()
{
int matrix[][COLS] = { { 1, 2, 3, 4, 0 },
{ 5, 6, 100, 8, 1 },
{ 2, 100, 8, 100, 3 },
{ 1, 7, 100, 9, 6 },
{ 9, 10, 11, 12, 13 } };
// sumBoundaries = (1 + 2 + 3 + 4 + 0) = 10 + (1 + 3 + 6 + 13) = 23 +
// (12 + 11 + 10 + 9) = 42 + (1 + 2 + 5) = 9 : 10 + 23 + 42 + 8 = 83
// sumDiagonalLeft = (1 + 6 + 8 + 9 + 13) = 37
// sumDiagonalRigth = (0 + 8 + 8 + 7 + 9) = 32
// 83 + 37 + 32 = 152
int rows = sizeof matrix / sizeof matrix[0];
int cols = sizeof matrix[0] / sizeof(int);
std::cout << sumDiagonalsAndBoundaries(matrix, rows, cols);
}
/*
run:
sumBoundaries = 83
sumDiagonalLeft = 37
sumDiagonalRigth = 32
152
*/