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

Duda con matrices

Estas en el tema de Duda con matrices en el foro de Java en Foros del Web. Mi duda es la siguiente, puedo llenar una matriz a partir de otras? Ejemplo: Mi matriz principal es de 9x9 y tengo q llenarla a ...
  #1 (permalink)  
Antiguo 09/02/2014, 16:52
 
Fecha de Ingreso: julio-2009
Mensajes: 28
Antigüedad: 15 años, 4 meses
Puntos: 0
Duda con matrices

Mi duda es la siguiente, puedo llenar una matriz a partir de otras?
Ejemplo:
Mi matriz principal es de 9x9 y tengo q llenarla a partir de 9 matrices de 3x3
Se puede hacer eso? Me darian una idea de como se podria hacer?

Saludos
Muchas gracias
  #2 (permalink)  
Antiguo 11/02/2014, 11:33
Avatar de floppy-dj  
Fecha de Ingreso: diciembre-2006
Ubicación: Huelva
Mensajes: 25
Antigüedad: 17 años, 11 meses
Puntos: 0
Respuesta: Duda con matrices

hola shin18, se me ocurre que lo hagas de la siguiente forma:

creas una función a la que le pasas una matriz, 2 coordenadas y una matriz mas pequeña, esta función te meterá la matriz pequeña dentro de esas dos coordenadas, puedes pensar que la segunda coordenada es una tontería meterla ya que si es de 3x3 para que le vas ha decir desde donde hasta donde si ya sabe que serian 3 posiciones más, pero si lo haces hasi, podrás meter una matriz del tamaño que quieras, 3x3, 3x2, 4x5...

La función sería una cosa como ésta:
Código:
private static void meter(int[][] m9x9, int cx1, int cy1, int cx2, int cy2, int[][] m3x3) {
        for (int i = cx1; i < cx2; i++) {
            for (int j = cy1; j < cy2; j++) {
                m9x9[i][j] = m3x3[i - cx1][j - cy1];
            }
        }
    }
y la llamada seria asi:
Código:
meter(m9x9,0,0,2,2,m3x31);
Ésta llamada mete la matriz m3x31 dentro de la matriz m9x9, empezando por la posicion 0,0 y terminando en la 2,2 ambas inclusive.


y aqui te dejo un ejemplo completo:
Código:
package javaapplication18;

/**
 *
 * @author floppy
 */
public class JavaApplication18 {
    public static void main(String[] args) {
        int[][] m9x9=new int[9][9];
        int[][] m3x31=new int[3][3];
        int[][] m3x32=new int[3][3];
        int[][] m3x33=new int[3][3];
        int[][] m3x34=new int[3][3];
        int[][] m3x35=new int[3][3];
        int[][] m3x36=new int[3][3];
        int[][] m3x37=new int[3][3];
        int[][] m3x38=new int[3][3];
        int[][] m3x39=new int[3][3];
        int a=0;
        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 3; j++) {
            //aqui meto valores a las matrices pequeñas
                m3x31[i][j]=a;a++;
                m3x32[i][j]=a;a++;
                m3x33[i][j]=a;a++;
                m3x34[i][j]=a;a++;
                m3x35[i][j]=a;a++;
                m3x36[i][j]=a;a++;
                m3x37[i][j]=a;a++;
                m3x38[i][j]=a;a++;
                m3x39[i][j]=a;a++;
            }
        }
        meter(m9x9,0,0,2,2,m3x31);
        meter(m9x9,0,3,2,5,m3x32);
        meter(m9x9,0,6,2,8,m3x33);
        meter(m9x9,3,0,5,2,m3x34);
        meter(m9x9,3,3,5,5,m3x35);
        meter(m9x9,3,6,5,8,m3x36);
        meter(m9x9,6,0,8,2,m3x37);
        meter(m9x9,6,3,8,5,m3x38);
        meter(m9x9,6,6,8,8,m3x39);
        for (int i = 0; i < 9; i++) {
            for (int j = 0; j < 9; j++) {
            //aqui muestro la matriz grande
               System.out.print(m9x9[i][j]+" ");
            }
            System.out.println("");
        }
    }
    private static void meter(int[][] m9x9, int cx1, int cy1, int cx2, int cy2, int[][] m3x3) {
        for (int i = cx1; i <= cx2; i++) {
            for (int j = cy1; j <= cy2; j++) {
                m9x9[i][j] = m3x3[i - cx1][j - cy1];
            }
        }
    }
}

Etiquetas: matrices
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 16:19.