Используя подпрограммы и динамические переменные решить задачу:
в текстовом файле находятся размеры прямоугольной матрицы и сама матрица.во втором текстовом файле находится информация о номерах строк.Нужно упорядочить строки в соответствии с порядком,приведённом во втором текстовом файле


есть отрывок небольшой

Program lol;
uses crt;
type radoc = array [1..1] of integer;
Pradoc = ^radoc;
Ptrmas = array [1..1] of Pradoc;
Ptr = ^Ptrmas;
var
A,R:Ptr;
B:Pradoc;
n,m: integer;
f,t: text;
{function swap(A:Ptr; i,k:integer):Ptr;
begin
P:=A^[i];
A^[i]:=A^[k];
A^[k]:=P;
end;}
procedure Getmemory(var A:Ptr; n,m: integer);
var i: integer;
begin
GetMem(A,n*SizeOf (Ptr));
for i:= 1 to n do
GetMem (A^[i], m*SizeOf (integer));
end;

procedure FreeMemory(var A:Ptr; n,m: integer);
var i: integer;
begin
for i:=1 to n do
FreeMem (A^[i], m*SizeOf (integer));
FreeMem (A, n*SizeOf (Ptr));
end;
procedure Init (var A:Ptr; namet:string; var n,m:integer);
var t:text;
i,j: integer;
begin
assign (t,namet);
reset(t);
read (t,n,m);
for i:=1 to n do
for j:=1 to m do
read (t, A^[i]^[j]);
close(t);
end;
procedure InitB (var B:Pradoc; namef:string; var n:integer);
var f:text;
i: integer;
begin
assign (f,namef);
reset(f);
for i:=1 to n do
read (f, B^[i]);
close(f);
end;
procedure Show(A:Ptr; n,m:integer);
var i,j:integer;
begin
for i:=1 to n do
for j:=1 to m do
write (A^[i]^[j]);
writeln;
end;
procedure Work(var A:Ptr; B:Pradoc; n,m: integer);
var k,i,j:integer;
begin
for i:=1 to n do
for j:=1 to m do
if A^[i]^[j] = B^[i] then
begin
k:=i;
break;
end;
end;
begin
clrscr;
assign(f,'f.txt');
reset(f);
read(f,m,n);
close(f);
getmemory(A,n,m);
getmem(B,n*);
initB(B,'t.txt',n);
init(A,'f.txt',n,m);
Writeln('_________')
show(A,n,m);
writeln;
readln;
freememory(A,n,m);
end.