Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/06/2013, 15:04
Mariiia
 
Fecha de Ingreso: mayo-2013
Mensajes: 2
Antigüedad: 10 años, 10 meses
Puntos: 0
matriz que rote a la derecha

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;
}
}
}