type
matrix = array of array of integer;
arr = array of integer;
procedure matr2(c: char; var x: matrix; var m, n: integer);
var
i, j: integer;
begin
writeln('Введите количество строк в матрице ' + c + ': ');
readln(m);
writeln('Введите количество столбцов в матрице ' + c + ': ');
readln(n);
setlength(x,m,n);// вот эта строчка!
writeln('Матрица ', c, ':');
for i := 0 to m-1 do
begin
for j := 0 to n-1 do
begin
x[i, j] := -99 + random(199);
write(x[i, j]:4)
end;
writeln
end
end;
procedure el(const x: matrix; const m, n: integer; var y: arr);
var
i, j: integer;
begin
for j := 1 to n do y[j] := 0;
for i := 1 to m do
for j := 1 to n do
if x[i, j] < 0 then inc(y[j])
end;
procedure poell(var y: arr; const n: integer);
var
j: integer;
begin
writeln('Количество отрицательных элементов по столбцам:');
for j := 1 to n do write(y[j]:4);
writeln;
writeln
end;
var
a, b: matrix;
c, d: arr;
i, j, k, e: integer;
begin
randomize;
matr2('A', a, i, j);
el(a, i, j, c);
poell(c, j);
matr2('B', b, k, e);
el(b, k, e, d);
poell(d, e);
readln;
end.
Я предполагаю, что ошибка в неверной передаче параметров в Setlength, как можно изменить первую процедуру, чтобы эта ошибка исчезла?
А во второй процедуре,нужно так же выделять место под массив?
procedure el(const x: matrix; const m, n: integer; var y: arr);
var
i, j: integer;
begin
for j := 1 to n do y[j] := 0;
for i := 1 to m do
for j := 1 to n do
if x[i, j] < 0 then inc(y[j])
end;
Программа ищет количество отрицательных элементов по столбцам.
Просто мне выдает ошибку, что параметр цикла for в PascalABC.NET должен описываться в заголовке цикла.