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. |