Построение новой матрицы из сумм значений соседей - 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.
- Циклы перебирают все строки и столбцы результирующей матрицы.
- Для каждой ячейки результирующей матрицы вычисляется сумма значений ее соседей в исходной матрице.
- Результирующая матрица выводится на экран.