Foros del Web » Programación para mayores de 30 ;) » Java »

Girar matriz 2 dimesiones

Estas en el tema de Girar matriz 2 dimesiones en el foro de Java en Foros del Web. Hola buenos dias, tengo que realizar un ejercicio de girar un Arraybidimensional, 90 grados en sentido antihorario. y la verdad no se por donde cogerlo. ...
  #1 (permalink)  
Antiguo 14/05/2012, 05:45
 
Fecha de Ingreso: abril-2012
Mensajes: 28
Antigüedad: 12 años
Puntos: 0
Girar matriz 2 dimesiones

Hola buenos dias, tengo que realizar un ejercicio de girar un Arraybidimensional, 90 grados en sentido antihorario.

y la verdad no se por donde cogerlo.
tengo ya el array creado con las dimensiones y los valores entrados por teclado.

la matriz original tiene este diseño

123
456 y necesito que quede asi : 36
25
14


Gracias por su apoyo.
  #2 (permalink)  
Antiguo 14/05/2012, 07:42
 
Fecha de Ingreso: abril-2012
Mensajes: 28
Antigüedad: 12 años
Puntos: 0
Respuesta: Girar matriz 2 dimesiones

Upss!! se me ha editado mal.


matriz original
123
456

y la matriz girada
36
25
14

saludos.
  #3 (permalink)  
Antiguo 14/05/2012, 10:22
Avatar de cronopiomx  
Fecha de Ingreso: mayo-2012
Ubicación: Programing Cloud
Mensajes: 282
Antigüedad: 11 años, 11 meses
Puntos: 28
Respuesta: Girar matriz 2 dimesiones

for (int i = 0; i < c; i++)
{
int h = c-1;
for(int j = 0; j < c; j++)
{
matrizrotada [h][i] = matrizoriginal [i][j];
h--;
}
}
  #4 (permalink)  
Antiguo 14/05/2012, 14:14
 
Fecha de Ingreso: abril-2012
Mensajes: 28
Antigüedad: 12 años
Puntos: 0
Respuesta: Girar matriz 2 dimesiones

Gracias por responder , pero tengog una duda la "c" que es una variable auxiliar o el Arraybidimensional.?

Me podrias explicar un poco el codigo, de esta manera lo entendere y lo asimilare , para proximas veces.

Muchas gracias.
  #5 (permalink)  
Antiguo 14/05/2012, 16:10
Avatar de zero0097  
Fecha de Ingreso: abril-2010
Ubicación: México
Mensajes: 481
Antigüedad: 14 años
Puntos: 69
Respuesta: Girar matriz 2 dimesiones

la C es el numero de veces que debe hacerse ese for, usualmente es el largo del array....
__________________
De nada, hay te encargo +1...
  #6 (permalink)  
Antiguo 15/05/2012, 00:15
 
Fecha de Ingreso: abril-2012
Mensajes: 28
Antigüedad: 12 años
Puntos: 0
Respuesta: Girar matriz 2 dimesiones

Este es el codigo que tengo y me da error fuera de indice en la linea :

matrizrotada[h][i] = Arraybidi[i][j]
que tengo mal??

Código:
 Scanner lector=new Scanner(System.in);
        int numfilas=0;
        int numcolum=0;
        int i=0;
        int j=0;
        System.out.println("¿Cuantas filas debe tener?");
        numfilas=lector.nextInt();
        System.out.println("¿Cuantas columnas debe tener");
        numcolum= lector.nextInt();
        
       int  Arraybidi[][]= new int [numfilas][numcolum];   
       System.out .println("rellena los valores");
       
       for( i=0;i<numfilas;i++){
           for(j=0;j<numcolum;j++){
               Arraybidi[i][j]= lector.nextInt();
               
             
           } 
          
 int matrizrotada[][]=new int [numcolum][numfilas];
 for ( i = 0; i < numfilas; i++)
{
int h = numcolum-1;
for( j = 0; j < numcolum; j++)
{
matrizrotada [h][i] = Arraybidi[i][j];
h--;
} 
                   
       }
         for(i = 0; i < numfilas; i++) {

System.out.print("Fila " + i + " { ");
for ( j = 0; j < numcolum; j++) {
System.out.print(Arraybidi[i][j] + " ");
}

System.out.println("}");
}
         
         
         }
       }}
  #7 (permalink)  
Antiguo 15/05/2012, 10:45
 
Fecha de Ingreso: abril-2012
Mensajes: 28
Antigüedad: 12 años
Puntos: 0
Respuesta: Girar matriz 2 dimesiones

Despues de hacer varias pruebas, me he he dado cuenta que la asignacion


matrizrotada[h][i]=ArrayBidi[i][j];

cuando la tengo aplicada dentro del bucle, no me asigna valor y me da valor 0, solo consigo que me coja el valor si especifico los subindices en concreto ejem:

matrizrotada[2][1]=ArrayBidi[1][2].

He comprobado Que el Arrayoriginal este rellenada con sus valores.

Alguien me puede decir por que pasa eso?
  #8 (permalink)  
Antiguo 15/05/2012, 14:38
Avatar de zero0097  
Fecha de Ingreso: abril-2010
Ubicación: México
Mensajes: 481
Antigüedad: 14 años
Puntos: 69
Respuesta: Girar matriz 2 dimesiones

es que al estarla girando se sobrescriben sus valores por los que tiene en otras posiciones, necesitas hacer una matriz temporal, donde pases allí cada elemento de la matriz original a la copia en si...

Código:
char matemp[][] = new char[dimension][dimension];
//comparar
            for(int i=0; i<=dimension; i++) {

                for(int j=0; j<=dimension; j++) {

                        //girar a la derecha
                        matemp[j][i] = caja[i][j];     
                        
                    } 

                }

            }
__________________
De nada, hay te encargo +1...
  #9 (permalink)  
Antiguo 15/05/2012, 16:15
 
Fecha de Ingreso: abril-2012
Mensajes: 28
Antigüedad: 12 años
Puntos: 0
Respuesta: Girar matriz 2 dimesiones

Por fin me ha salido, al final habia que hacerlo como me puso cronopiomx,
se ve que colocaba mal los contadores, y despues de tanto fallar me volvi loco y ya no sabia que hacia.


Gracias a todos soys unos cracks.

Etiquetas: girar, matriz
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:51.