Паскаль выдает ошибку в процедуре: Нет индексного свойства по умолчанию для типа integer....

0 голосов
213 просмотров

Паскаль
выдает ошибку в процедуре: Нет индексного свойства по умолчанию для типа integer. Помогите разобраться.


procedure input (var n,m:integer; var a:array of integer);
var i,j:integer;
begin
clrscr;
write('input quantity of rows ');readln(n);
write('input quantity of columns ');readln(m);
for i:=1 to n do begin
for j:=1 to m do begin
write(' a[',i,',',j,']=');
read (a[i][j]);
writeln; end;
end;end;


Информатика (205 баллов) | 213 просмотров
Дан 1 ответ
0 голосов

Собака зарыта в строчках
var a:array of integer
...
read(a[i][j])

Смысл в том, что a, похоже, объявлен как одномерный массив, а по твоей задумке он двумерный. Поставь там инициализацию двумерных массивов.
(В PascalABC.Net, если ты тоже в этой среде и этом диалекте, то там я ручаюсь, что там правильно var a:array  [,] of integer. Хотя допускаю, что везде одинаково).

(1.5k баллов)
0

А здесь вроде как даже нет обращения a[i,j] - ведь write(' a[',i,',',j,']='); это не обращение. А мое предложение инициализировать массив через var a:array [,] of integer действительно работает (см. "Справка">>"Типы данных">>"Динамические массивы", строчка 5, если считать заголовки.)

0

Да, согласен, суть ошибки именно в этом. А уж массив массивов или двумерный массив - не суть важно.