Transpose an arbitrarily sized rectangular Matrix.




 
module MatrixOps;
type
	Matrix = array {math} *,* of integer;
 
 
	procedure WriteMatrix(x: array {math} *,* of integer);
	var
		i,j: integer;
	begin
		for i := 0 to len(x,0) - 1 do
			for j := 0 to len(x,1) - 1 do
				write(x[i,j]);
			end;
			writeln;
		end	
	end WriteMatrix;
 
	procedure Transposition;
	var
		m,x: Matrix;
	begin
		m := [[1,2,3],[3,4,5]]; (* matrix initialization *)
		x := !m; (* matrix trasposition *)
		WriteMatrix(x);
	end Transposition;
 
begin
	Transposition;
end MatrixOps.
 