Найти сумму чисел, которые находятся в определенном расположении в массиве
Необходимо посчитать сумму чисел в массиве, расположенных по краям (из файла на вход поступает матрица). В результате надо вывести сумму этих чисел.
Пример входных данных:
Неудачная реализация в моем коде:
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;
}
Да достаточно большой для такой легкой задачи, но и у него есть преимущества. Он быстрее, чем проходить по всем элементам матрицы!))
