Ошибка времени выполнения - Pascal
Формулировка задачи:
Ошибка времени выполнения, индекс находится вне границ массива, строка 58, не понимаю в чем дело
Либо эту ошибку постоянно ловлю, либо при распечатывании обнуляется вторая половина одномерного массива, помогите пожалуйста.
Нужно ввести с помощью подпрограмм два двумерных массива, найти в каждом из них столбец с минимальным элементом и из этих столбцов сделать одномерный массив, все распечатать.
Решение задачи: «Ошибка времени выполнения»
textual
Листинг программы
TYPE mas = array[1..20] of integer; matr = array[1..10, 1..10] of integer; Procedure vvod2m(var a:matr; var n,m:integer); var i,j:integer; begin; writeln('n,m-?'); readln(n,m); for i:=1 to n do for j:=1 to m do begin write('A[',i,',',j,']='); readln(a[i,j]); end; end; Procedure Vivod2m(a:matr; n,m:integer;s:string); var i,j:integer; begin writeln(s); for i:=1 to n do begin for j:=1 to m do write(a[i,j]:4); writeln; end; end; Procedure Vivod1m ( b:mas; n:integer); var i:integer; begin for i:=1 to n do write(b[i]:4); end; Function Indmin(var a:matr; n,m:integer):integer; var i,j, jmin, min:integer; begin min:= a[1,1]; jmin:=1; for i:=1 to n do for j:=1 to m do if a[i,j]<min then begin min:=a[i,j]; jmin:=j; end; indmin:=jmin; end; Procedure From(a:matr;n1:integer; var b:mas; var n:integer; stlb:byte); var i:integer; begin for i:=1 to n1 do begin n:=n+1; b[n]:=a[i,stlb] end; end; var n1,m1,n2,m2,n3:integer; a1,a2: matr; b: mas; stlb1, stlb2:byte; begin writeln('Ввод первой матрицы'); vvod2m(a1,n1,m1); Stlb1:=Indmin(a1,n1,m1); writeln(stlb1); n3:=0; From(A1,N1,B,n3,stlb1); writeln('Ввод второй матрицы'); vvod2m(a2,n2,m2); stlb2:=Indmin(a2,n2,m2); writeln(stlb2); From(A2,N2,B,n3,stlb2); Vivod2m(a1,n1,m1,'Матрица 1'); writeln; Vivod2m(a2,n2,m2,'Матрица 2'); writeln; writeln('Массив:'); Vivod1m (b,n1+n2); end.
Объяснение кода листинга программы
- Объявлены две матрицы:
mas
иmatr
. - Ввод данных для первой матрицы с помощью процедуры
vvod2m
. - Находим минимальный элемент в первой матрице с помощью функции
Indmin
. - Ввод данных для второй матрицы с помощью процедуры
vvod2m
. - Находим минимальный элемент во второй матрице с помощью функции
Indmin
. - Ввод данных для третьей матрицы с помощью процедуры
From
. - Вывод первой матрицы с помощью процедуры
Vivod2m
. - Вывод второй матрицы с помощью процедуры
Vivod2m
. - Вывод массива с помощью процедуры
Vivod1m
. - Ввод данных для первой матрицы с помощью процедуры
vvod2m
. - Ввод данных для второй матрицы с помощью процедуры
vvod2m
. - Выполнение операций над матрицами с помощью процедур
From
. - Ввод данных для третьей матрицы с помощью процедуры
From
. - Вывод первой матрицы с помощью процедуры
Vivod2m
. - Вывод второй матрицы с помощью процедуры
Vivod2m
. - Вывод массива с помощью процедуры
Vivod1m
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д