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

Mover elementos de una matriz cuadrada. HEPL!

Estas en el tema de Mover elementos de una matriz cuadrada. HEPL! en el foro de Java en Foros del Web. Buenas, tengo una matriz cuadrada creada con el siguiente metodo Código: /** * Crea la matriz con un tamaño que se le pasa por teclado ...
  #1 (permalink)  
Antiguo 15/12/2012, 09:03
Avatar de DCienfuegos  
Fecha de Ingreso: febrero-2009
Ubicación: Asturias
Mensajes: 195
Antigüedad: 15 años, 10 meses
Puntos: 3
Pregunta Mover elementos de una matriz cuadrada. HEPL!

Buenas, tengo una matriz cuadrada creada con el siguiente metodo

Código:
/**
     * Crea la matriz con un tamaño que se le pasa por teclado
     * 
     * @param  int tamaño size
     */
    public void crearMatriz(int size)
    {
        if(size>0 && size <= MAX_SIZE) 
        this.size=size;
        {
            matriz = new int[size][size];        
                for(int i=0; i<size; i++) {
                    for(int j=0; j<size; j++) {          // recorro la matriz
                        Random r = new Random();         // para generar aleatoriamente
                        matriz[i][j] = r.nextInt(50+1);  // relleno aleatoriamente
                    }
                }
            }
    }
Con el cual especificamos el tamaño y rellenamos la matriz con numero aletorios del 0 al 50.

Lo que trato de hacer ahora es un metodo que lo que haga el girar la matriz hacia la derecha, os pongo un ejemplo visual:

Matriz1:

1 2 3
4 5 6
7 8 9

---> Metodo girar 90º derecha

Matriz1:

7 4 1
8 5 2
9 6 3

El problema es que no consigo hacerlo funcionar, probe a cambiar filas por columnas con una auxiliar (matrizAux[i][j] = matriz[j][i];) pero haciendo esto el elemento 1,1 siempre es el mismo y no me lo gira bien...

¿Se os ocurre como poder hacerlo?

Muchisimas gracias!
  #2 (permalink)  
Antiguo 15/12/2012, 10:37
Avatar de DCienfuegos  
Fecha de Ingreso: febrero-2009
Ubicación: Asturias
Mensajes: 195
Antigüedad: 15 años, 10 meses
Puntos: 3
Respuesta: Mover elementos de una matriz cuadrada. HEPL!

Ya lo he conseguido, por si alguien le viene bien de ayuda os dejo el codigo usado para mover 90º izq y derecha

Código:
   /**
     * Metodo que gira la matriz 90ª hacia la izquierda
     * 
     */
    public void girar90i()
    {
        int[][] matrizAux = new int[size][size];
        
        for (int i=0; i<size; i++) {
            int h = size-1;
                for(int j=0; j<size; j++) {
                        matrizAux[h][i] = matriz[i][j]; 
                        h--;
                } 
        }   
        
        matriz = matrizAux;
    }
    
    /**
     * Metodo que gira la matriz 90ª hacia la derecha
     * 
     */
    public void girar90d()
    {
        int[][] matrizAux = new int[size][size];
        
        for (int i=0; i<size; i++) {
            int h = size-1;
                for(int j=0; j<size; j++) {
                        matrizAux[i][h] = matriz[j][i]; 
                        h--;
                } 
        }   
        
        matriz = matrizAux;
    }

Etiquetas: cuadrada, elementos, 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 22:21.