Найти сумму чисел, которые находятся в определенном расположении в массиве

Необходимо посчитать сумму чисел в массиве, расположенных по краям (из файла на вход поступает матрица). В результате надо вывести сумму этих чисел.

Пример входных данных:

Неудачная реализация в моем коде:

void zadanie(int &sum,int &real_rows,int &real_columns, float **arr)
{
    for (int j{}; j<real_columns; j++)
    {
        for (int i{}; i < real_columns; i++)
        {
            sum += *(*(arr+i)+j);
        }
    }
}

Ответы (2 шт):

Автор решения: Mikhailo
double zadanie(double **arr, int rows,int columns) {
    double sum = 0;
    for (int r = 0; r < rows; r++)
        for (int c = 0; c < columns; c++)
            if (r == 0 || r == rows-1 || с == 0 || с == columns-1)
                sum += arr[r][c];
    return sum;
    }
→ Ссылка
Автор решения: Павел Ериков

Просто так хочу поделится кодом ниже:

float zadanie(float** matrix, int rows, int cols) {
float sum = 0;
//Условие если только одна строка
if (rows == 1) {
    for (int c = 0; c < cols; ++c)
        sum += matrix[0][c];
}
//Условие если только один столбец
else if (cols == 1) {
    for (int r = 0; r < rows; ++r)
        sum += matrix[r][0];
}
else {
    //Складываем верхнюю строчку и нижнюю
    if(rows > 0)
        for (int c = 0; c < cols; ++c)
            sum += matrix[0][c] + matrix[rows - 1][c];
    //Складываем числа по бокам
    if(cols > 0)
        for (int r = 1; r < rows - 1; ++r)
            sum += matrix[r][0] + matrix[r][cols - 1];
}
return sum;
}

Да достаточно большой для такой легкой задачи, но и у него есть преимущества. Он быстрее, чем проходить по всем элементам матрицы!))

→ Ссылка