Построить новую матрицу такого же размера по правилу - PascalABC.NET
Формулировка задачи:
Вот полностью программа и по факту должна работать,но где-то здесь if a[i1,j1] < min then
min := a[i1,j1]; b[i,j] := min; выдаёт ошибку выход за границу массива,помогите найти ошибку
Решение задачи: «Построить новую матрицу такого же размера по правилу»
textual
Листинг программы
const
m = 4;
n = 5;
type
Matrix = array [0..m+1, 0..n+1] of integer;
var
a, b : Matrix;
i, j, i1, j1 : integer;
min : integer;
begin
randomize;
//создадим периметр из маесимальных чисел
for i:=0 to n+1 do
begin
a[0,i]:=maxint;
a[m+1,i]:=maxint;
end;
for i:=0 to m+1 do
begin
a[i,0]:=maxint;
a[i,n+1]:=maxint;
end;
//заполним середину
writeln('Матрица а:');
for i:=1 to m do
begin
for j:=1 to n do
begin
a[i,j] := random(20);
write(a[i,j]:4);
end;
writeln;
end;
{Построение матрицы b - минимумы среди соседей}
for i:=1 to m do
for j:=1 to n do
begin
min:=a[i-1,j-1];
for i1:=i-1 to i+1 do
for j1:=j-1 to j+1 do
if ((i1<>i) or (j1<>j))and(a[i1,j1]<min) then min:=a[i1,j1];
b[i,j]:=min;
end;
{Вывод матрицы b на экран}
writeln('Матрица b:');
for i:=1 to m do
begin
for j:=1 to n do
write(b[i,j]:4);
writeln;
end;
end.
Объяснение кода листинга программы
Список элементов кода:
- Задание размеров матрицы a и b с помощью констант m и n.
- Объявление типа матрицы Matrix и переменных a, b, i, j, i1, j1, min с помощью ключевого слова var.
- Инициализация матрицы a значениями maxint по периметру с помощью двух циклов for.
- Инициализация матрицы b значениями min с помощью двух циклов for.
- Заполнение матрицы a случайными значениями в диапазоне от 0 до 19 с помощью цикла for и двух вложенных циклов for.
- Построение матрицы b на основе минимальных значений среди соседей элементов матрицы a с помощью двух вложенных циклов for и четырех вложенных циклов for.
- Вывод матрицы b на экран с помощью цикла for и двух вложенных циклов for.