Ошибка времени выполнения - 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.

Объяснение кода листинга программы

  1. Объявлены две матрицы: mas и matr.
  2. Ввод данных для первой матрицы с помощью процедуры vvod2m.
  3. Находим минимальный элемент в первой матрице с помощью функции Indmin.
  4. Ввод данных для второй матрицы с помощью процедуры vvod2m.
  5. Находим минимальный элемент во второй матрице с помощью функции Indmin.
  6. Ввод данных для третьей матрицы с помощью процедуры From.
  7. Вывод первой матрицы с помощью процедуры Vivod2m.
  8. Вывод второй матрицы с помощью процедуры Vivod2m.
  9. Вывод массива с помощью процедуры Vivod1m.
  10. Ввод данных для первой матрицы с помощью процедуры vvod2m.
  11. Ввод данных для второй матрицы с помощью процедуры vvod2m.
  12. Выполнение операций над матрицами с помощью процедур From.
  13. Ввод данных для третьей матрицы с помощью процедуры From.
  14. Вывод первой матрицы с помощью процедуры Vivod2m.
  15. Вывод второй матрицы с помощью процедуры Vivod2m.
  16. Вывод массива с помощью процедуры Vivod1m.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.857 из 5
Похожие ответы