0 / 0 / 0
Регистрация: 02.04.2018
Сообщений: 8
1

Ошибка времени выполнения

02.04.2018, 17:33. Показов 1355. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ошибка времени выполнения, индекс находится вне границ массива, строка 58, не понимаю в чем дело
Либо эту ошибку постоянно ловлю, либо при распечатывании обнуляется вторая половина одномерного массива, помогите пожалуйста.
Нужно ввести с помощью подпрограмм два двумерных массива, найти в каждом из них столбец с минимальным элементом и из этих столбцов сделать одномерный массив, все распечатать.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
 Program Sos;
TYPE
mas = array[1..200] of integer;
matr = array[1..100, 1..100] of integer;
var
n1,m1,n2,m2, n3:integer;
a1,a2: matr;
b: mas; 
stlb1, stlb2:byte;
 
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,']=');
read(a[i,j]);
end;
end;
 
Procedure Vivod2m(a:matr; n,m:integer);
var i,j:integer;
begin
for i:=1 to n do 
for j:=1 to m do 
write('A[',i,',',j,']=',a[i,j]);
end;
 
 
Procedure Vivod1m ( b:mas; n:integer);
var i:integer;
begin
for i:=1 to n do 
write('A[',i,']=', b[i]);
end;
 
Function Indmin(var a:matr; n,m:integer):integer;
var i,j, jmin, min:integer;
begin
min:= A[1,1];
for i:=1 to n do
for j:=1 to m do begin
if a[i,j]<min then begin
min:=a[i,j];
jmin:=j;
end;
end;
indmin:=jmin;
writeln(jmin);
end;
 
Procedure From(a:matr; var B:mas; c,n:integer; stlb:integer);
var i:integer;
begin
for i:=c to n do 
b[i]:=a[i,stlb]
end;
 
 
begin
writeln('Ввод первой матрицы');
vvod2m(a1,n1,m1);
Stlb1:=Indmin(a1,n1,m1); writeln(stlb1);
 
From(A1,B,1,N1,stlb1);
 
writeln('Ввод второй матрицы');
vvod2m(a2,n2,m2);
stlb2:=Indmin(a2,n2,m2); writeln(stlb2);
 
From(A2,B,n1+1,N1+N2,stlb2);
 
writeln(' Матрица 1');
Vivod2m(a1,n1,m1);
writeln;
 
writeln(' Матрица 2');
Vivod2m(a2,n2,m2);
writeln;
 
writeln('Массив:');
Vivod1m (b,n1+n2);
 
end.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.04.2018, 17:33
Ответы с готовыми решениями:

Ошибка времени выполнения
Program Lab6; Var S,a,J,h,b:real; n,i:integer; Begin Writeln ('Введите...

Ошибка времени выполнения: Файл не открыт на запись
Помогите пожалуйста найти ошибку Ошибка времени выполнения: Файл не открыт на запись program...

Ошибка времени выполнения при поиске различных чисел
const c=3; s=5; var a:array of integer; k,i,j:integer; begin for i:=1 to c do for j:=1 to...

Ошибка времени выполнения: Индекс находился вне границ массива
var q: string; i: integer; begin for i := 1 to 2 do begin writeln; writeln;

5
Почетный модератор
64287 / 47586 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
02.04.2018, 18:16 2
Перепишите функцию. Главная ошибка, не инициирована переменная jmin.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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;
1
0 / 0 / 0
Регистрация: 02.04.2018
Сообщений: 8
02.04.2018, 18:23  [ТС] 3
В таком случае массив все равно обнуляется во второй части и я не понимаю почему
Массив:
A[1]=1 A[2]=4 A[3]=7 A[4]=0 A[5]=0 A[6]=0
0
Почетный модератор
64287 / 47586 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
02.04.2018, 18:30 4
А какое условие задачи? Что-то не понятно с массивом, 3 раза создаете, 1 раз выводите.
0
0 / 0 / 0
Регистрация: 02.04.2018
Сообщений: 8
02.04.2018, 18:37  [ТС] 5
Ввести двумерные массивы а1 n1xm1 и a2 n2xm2. Переписать элементы столбцов обеих матриц, содержащих минимальные элементы в своих матрицах, в одномерный массив B n1+n2. Обе матрицы и массив вывести на печать. Исп. подпрограммы. функция indmin - индекс столбца, содержащего минимум
процедура from - перепись из матриц в массив столбцов stlb1, stlb2
0
Почетный модератор
64287 / 47586 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
02.04.2018, 18:55 6
Лучший ответ Сообщение было отмечено Globby как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.04.2018, 18:55
Помогаю со студенческими работами здесь

Ошибка времени выполнения: Ссылка на объект не указывает на экземпляр объекта
1 процедура создает очередь, 2 - вставляет после каждого положительного элемента заданное число, а...

Ошибка времени выполнения, в экземпляре объекта не задана ссылка на объект
Программа должна реализовывать метод Зейделя. Но при вводе массива выдает ошибку времени...

Ошибка времени выполнения: Входная строка имела неверный формат
Здравствуйте, столкнулся с такой проблемой Задача:Заполнить квадратный массив А (NхN) элементов...

Ошибка времени выполнения: Индекс находился вне границ массива
Уже час не могу найти ошибку, помогите. var a:array of integer; var b:array of integer;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru