с проблемой:
var
n,i,j:integer;
m:array [1..n,1..n] of integer;
begin
writeln('Введите размерность матрицы');
read(n);
for i:=1 to n do
begin
for j:=1 to n do
read(m[i,j]);
end;
for i:=1 to n do
begin
for j:=1 to 41 do
write(m[i,j]:5);
writeln
end;
end.
ошибка: ожидалось константное выражение
мне не обходимо чтобы пользователь сам задавал размерность вводимого массива
Объяснение:
Для этого нужно использовать динамические массивы.
var m: array of array of integer; означает массив массивов integer.
SetLength(m, n, n); инициализирует двумерный массив m размерностью n•n.
Но при использовании динамических массивов изменяется принцип обращения к элементам: если ранее (в статических массивах) нумерация шла с 1, то сейчас с 0. Также изменилось условие окончания цикла (ранее было до n, сейчас до n - 1)
Полный код:
var
n, i, j: integer;
m: array of array of integer;
begin
writeln('Введите размерность матрицы');
read(n);
SetLength(m, n, n);
for i:=0 to n-1 do
begin
for j:=0 to n-1 do
read(m[i,j]);
end;
for i:=0 to n-1 do
begin
for j:=0 to n-1 do
write(m[i,j]:5);
writeln();
end;
end.