Построение новой матрицы из сумм значений соседей - PascalABC.NET
Формулировка задачи:
Дана целочисленная прямоугльная матрица размера mxn, заполненная случайными числами. Для каждого внутреннего элемента матрицы (то есть кроме крайних строк и столбцов) найти сумму значений его соседей, вывести эти суммы в виде матрицы.
Решение задачи: «Построение новой матрицы из сумм значений соседей»
textual
Листинг программы
- var a,b:array[,] of integer;
- m,n,m1,n1,i,j,i1,j1,k,p:integer;
- begin
- repeat
- write('Количество строк m>3 m=');
- readln(m);
- until m>3;
- repeat
- write('Количество столбцов n>3 n=');
- readln(n);
- until n>3;
- setlength(a,m,n);
- m1:=m-2;
- n1:=n-2;
- setlength(b,m1,n1);
- randomize;
- writeln('Исходная матрица');
- for i:=0 to m-1 do
- begin
- for j:=0 to n-1 do
- begin
- a[i,j]:=random(20);
- write(a[i,j]:3);
- end;
- writeln;
- end;
- i1:=-1;
- for i:=1 to m-2 do
- begin
- inc(i1);
- j1:=-1;
- for j:=1 to n-2 do
- begin
- inc(j1);
- b[i1,j1]:=0;
- for k:=i-1 to i+1 do
- for p:=j-1 to j+1 do
- b[i1,j1]:=b[i1,j1]+a[k,p];
- b[i1,j1]:=b[i1,j1]-a[i,j];
- end;
- end;
- writeln('Матрица сумм соседей');
- for i:=0 to m1-1 do
- begin
- for j:=0 to n1-1 do
- write(b[i,j]:4);
- writeln;
- end;
- end.
Объяснение кода листинга программы
- Объявлены массивы a и b для хранения исходной и результирующей матриц соответственно.
- Задаются размеры исходной матрицы с помощью переменных m и n.
- Инициализируются размеры результирующей матрицы m1 и n1.
- Заполняется исходная матрица случайными значениями с помощью цикла и функции random.
- Задается начальное значение для индексов результирующей матрицы i1 и j1.
- Циклы перебирают все строки и столбцы результирующей матрицы.
- Для каждой ячейки результирующей матрицы вычисляется сумма значений ее соседей в исходной матрице.
- Результирующая матрица выводится на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д