Построить новую матрицу такого же размера по правилу - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д