Если количество ненулевых элементов В меньше , чем (m x n)/3 , сформировать матрицу С размерами к х 3 в первом столбце которой содержатся ненулевые элементы матрицы В , а во втором и третьем столбцах - их координаты в исходной матрице.( (m x n)/3 - число, число к - число не нулевых элементов в матрице В .)

Задачу необходимо выполнить через procedure  или function.

Вот что я делал , но это не работает ((

Код:
program lab;
uses CRT;
const
n = 3;
m = 4;
type
matr= array[1..m,1..n] of integer;


procedure Vvod_B(var B:matr);
var i,j,m,n:integer;
begin

 writeln('Vvedite kol-vo strok v matrice B ');readln(m);
 writeln('Vvedite kol-vo stolbcov v matrice B ');readln(n);
 writeln;



 for i:=1 to m do
 for j:=1 to n do
 begin
 write('B[',i,',',j,']: ');readln(B[i,j]);
 end;

 writeln;
 writeln(' matrica B :');
 writeln;

 for i:=1 to m do
 begin
 for j:=1 to n do write(B[i,j]:5,' ');
   writeln;
 end;
end;


procedure Perestanovka(B:matr; var c:matr);
var
y,i,j,m,n:integer;
begin
y:= 0;

     begin
          for i:=1 to m do
          begin
               for j:=1 to n do
               begin
                    if B[i,j]<>0 then
                    begin
                         y:=y+1;
                         c[y,1]:=B[i,j];
                         c[y,2]:=i;
                         c[y,3]:=j;

                    end;
               end;
          end;
     end;
 readln;
end;

procedure Vivod_C(C:matr);
var i,j,m,n,y:integer;
 begin
  for i:=1 to y do
   begin
    for j:=1 to 3 do
     write(C[i,j]:5,' ');
     writeln;
   end;
 end;



var B,C:matr;
begin
 clrscr;
 Vvod_B(B);
 Perestanovka(B,C);
 Vivod_C(C);
 readln;
end.