C/C++

Напишите пожалуйста код на C++ или Python

Соседями элемента Аij в матрице назовем элементы Аkl, где i – 1 ≤ k ≤ i + 1, j – 1 ≤ l ≤ j + 1, (k, l) ≠ (i, j). Операция сглаживания матрицы дает новую матрицу того же размера, каждый элемент которой получается как среднее арифметическое имеющихся соседей соответствующего элемента исходной матрицы.
1. Построить результат сглаживания заданной вещественной матрицы размером 10 × 10 (оформить в виде процедуры).
2. В сглаженной матрице найти сумму модулей элементов, расположенных ниже главной диагонали (оформить в виде функции).
Я так понимаю, что усредняются только внутренние элементы (квадратной) матрицы, так как у элементов снаружи нет четырёх соседей? Если да, то можно так вот сделать с матрицей рандомных элементов, границы диапазона которых определяются пользователем:

#include <ctime>
#include <cstdlib>
#include <iomanip>
#include <iostream>

using namespace std;

void print_matrix(double **A, int n)
{
int i, j;
cout << endl;
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
cout << setw(8) << A[i][j];
cout << endl;
}
cout << endl;
}

void sglazh(double **A, int n)
{
int i, j;
for (i = 1; i < n - 1; i++)
for (j = 1; j < n - 1; j++)
A[i][j] = (A[i - 1][j] + A[i + 1][j] +
A[i][j - 1] + A[i][j + 1]) * 0.25;
}

double s(double **A, int n)
{
int i, j;
double su = 0.;
for (i = 1; i < n; i++)
for (j = 0; j < i; j++) su += abs(A[i][j]);
return su;
}

int main()
{
int i, j, n, iter;
double a, b;
cout << "a b n iter: " <<
setprecision(4) << fixed;
cin >> a >> b >> n >> iter;
double **A = new double *[n];
for (i = 0; i < n; i++) A[i] = new double [n];
srand(time(nullptr));
for (i = 0; i < n; i++) for (j = 0; j < n; j++)
A[i][j] = a + (b - a) * rand() / RAND_MAX;
print_matrix(A, n);
for (i = 1; i <= iter; i++)
{
sglazh(A, n);
cout << "Iteration " << i << ':' << endl;
print_matrix(A, n);
}
cout.precision(16);
cout << "Sum = " << s(A, n) << endl;
}

Печать получающихся в процессе сглаживания промежуточных матриц можно отменить. При границах диапазона [-20;20] элементов начальной матрицы весь процесс сглаживания занимает несколько десятков итераций. ✿ ✿ ✿ ✿
Сергей Владимирович
Сергей Владимирович
66 572
Лучший ответ