Buenas tardes este pseudocodigo hace rotar una matriz a la izquierda, alguien me puede ayudar a modificarlo para que rote a la derecha ... gracias de antemano
#include <stdio.h>
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
class ALUMNO{
char nombre[100];
public:
ALUMNO(){ strcpy(nombre,""); }
void IngAlumno(){
cout<<"\n Ing nombre: ";cin>>nombre;
}
void MosAlumno(){
cout<<" "<<nombre;
}
};
class MATRIZ{
ALUMNO a;
MATRIZ *abaj;
MATRIZ *sgte;
int nn;
public:
MATRIZ(){abaj=sgte=NULL;}
void IngMatriz(MATRIZ *&raiz,int nn){
MATRIZ *n,*q,*aux=NULL;
int i,j;
for(i=0;i<nn;i++){
for(j=0;j<nn;j++){
n=new MATRIZ;
n->a.IngAlumno();
if(raiz==NULL) raiz=n;
else{
if(i==0){q=raiz;
while(q->sgte!=NULL) q=q->sgte;
q->sgte=n;
}else{
if(j!=0){aux->sgte=n;}
nodo_dev(raiz,i-1,j)->abaj=n;
aux=n;
}
}
n->abaj=NULL;n->sgte=NULL;
}
n->sgte=nodo_dev(raiz,i,0);
}
}
void m(MATRIZ *&raiz){
raiz=raiz->sgte;
}
void MosMatriz(MATRIZ *raiz, int nn){
int p,q;
for(p=0;p<nn;p++){
cout<<"\n";
for(q=0;q<nn;q++){
nodo_dev(raiz,p,q)->a.MosAlumno();
}
cout<<"\n";
}
}
MATRIZ *nodo_dev(MATRIZ *raiz,int a, int b){
MATRIZ *q=new MATRIZ;
q=raiz;
int i,j;
for(i=0;i<a;i++) q=q->abaj;
for(j=0;j<b;j++) q=q->sgte;
return q;
}
};
int main(int argc, char *argv[]){
char op;
MATRIZ ma, *raiz=NULL;
for(;;){
cout<<"\n Ing Matriz <1>\n Mos Matriz <2>\n Rotar izq <3>\n Salir <4>";
op=getch();
switch(op){
case '1':ma.IngMatriz(raiz, 3);
break;
case '2':ma.MosMatriz(raiz,3);break;
case '3':ma.m(raiz);break;
case '4':return 0;
}
}
}