с помощью процедур решить задачу .
В заданной прямоугольной матрице поставить на первое место столбец с наименьшим количеством нулевых элементов, переставив все нули в конец этого столбца. (Изменённая матрица должна содержать все элементы исходной матрицы).
................................... ................................... ...........................
Получается 3 процедуры:
1 в каждом столбце найти кол-во нулей
2 найти с наименьшим кол-ом нулевых элементов
3 встречная сортировка
................................... ................................... ..................
Вот что я накалякала....Помогите разобраться с ошибками(
................................... ................................... ..................
Program z4_3_3_4;
const M = 5; N = 4;
type matr = array[1..N, 1..M] of real;
var
I,j:integer;
a:matr;


procedure kolnul(a:matr; col: integer);
var
i:integer;
k:integer;
koln: integer;
begin
k := 0;
for i:=1 to m do
if a[i, col]=0 then
k := k + 1;
k := kolN;
end;


procedure minnul(var a:matr);
var i,j,minN:integer;
w:real;
begin
minN:=i;
for i:=1 to n do
begin
w:=a[i,minN];
a[i,minN]:=a[i,1];
a[i,1]:=w;
end;
end;

procedure sort(var a: matr);
var i,j,minN,kolN:integer;
begin
for i:=1 to N do
begin
writeln(i);
if a[i, 1] = 0 then
begin
j := i;
while (a[j,1] <> 0) or (j = n) do begin
writeln(j);
inc(j);
end;
a[i, 1] := a[j, 1]
end;
for i:=n downto n - kolN + 1 do
a[i, n] := 0;
end;
end;


begin
begin
writeln(' Введите матрицу ') ;
for i:=1 to n do
for j:=1 to m do
read(a[i,j]);
end;
procedure kolnul(a:matr; col: integer);
if col then procedure minnul(var a:matr);
end else begin procedure sort(var a: matr); write(a[i,j]:5:2);
writeln;
end;
end;

end.