La Web del Programador: Comunidad de Programadores
 
    Pregunta:  13837 - ROTACIóN DE 90 GRADOS DE UNA MATRIZ CUADRADA
Autor:  Alejandro
Hola, me gustaría saber si alguien puede decirme el algoritmo para rotar una matriz bidimensional cuadrada, ya sea a la izquierda o derecha (seguramente se necesitan dos rutinas diferentes)
p ej.
Si tengo que MAX=3
una matriz de [1..MAX,1..MAX] de enteros:
1 2 3
4 5 6
7 8 9

como hago para que quede:
3 6 9
2 5 8
1 4 7

Muchas gracias.

  Respuesta:  Ramiro Javier Perelmiter
{Hola contesto a tu progunta, te envio ya todo el programita hecho}

{El algoritmo codificado en Pascal que vos Pedis el Procedimiento RotarMatrizOriginal}

Descargar archivo.

  Respuesta:  Alejandro
Ya descubri la respuesta, se necesitan estas rutinas:

procedure PonerFilaComoColum (AR: arreglo; var MAT: matriz; POS: integer);
var I: integer;
begin
for I:=1 to MAX do
MAT [I,POS]:= AR [I];
end;

procedure RotarIzquierda (var MAT: matriz);
var F,C: byte;
MAT2: matriz;
AR: arreglo;
begin
MAT2:= MAT;
for F:=1 to MAX do
begin
for C:=1 to MAX do
AR [C]:= MAT2 [F,C];
InvertirArreglo (AR);
PonerFilaComoColum (AR, MAT, F);
end;
end;

procedure RotarDerecha (var MAT: matriz);
var F,C: byte;
MAT2: matriz;
AR: arreglo;
begin
MAT2:= MAT;
for F:=1 to MAX do
begin
for C:=1 to MAX do
AR [C]:= MAT2 [F,C];
PonerFilaComoColum (AR, MAT, MAX-F+1);
end;
end;

Gracias de todos modos y espero que le sea util a otro que lo busque.