Matrizes

2 respostas
ricardocomp

Olá pessoal,
eu estou com uma dúvida aqui
estou precisando fazer uma permutação
entre as linhas de uma matriz

public class TrocaLinha {
    private static int[][] matriz = new int[4][3];

    public static void imprimeMatriz(int num){
        for(int i = 0; i < num; i++){
            for(int j = 0; j < 3; j++){
                System.out.print(matriz[i][j] + "  ");
            }
            System.out.println();
        }
    }

    public static void main(String[] args) {
               
        matriz[0][0] = 3;
        matriz[0][1] = 4;
        matriz[0][2] = 1;

        matriz[1][0] = 1;
        matriz[1][1] = 1000;
        matriz[1][2] = 2;

        matriz[2][0] = 2;
        matriz[2][1] = 2;
        matriz[2][2] = 3;

        matriz[3][0] = 5;
        matriz[3][1] = 5;
        matriz[3][2] = 4;

        int aux = 0;

        for(int k = 0; k < 6; k++){
            for(int i = 0; i < 3; i++){
                for(int j = 0; j < 3; j++){
                    aux = matriz[i][j];
                    matriz[i][j] = matriz[i+1][j];
                    matriz[i+1][j] = aux;                    
                }
                imprimeMatriz(4);
                System.out.println();
            }
        }

    }

}

Saída:

run:
1  1000  2  
3  4  1  
2  2  3  
5  5  4  

1  1000  2  
2  2  3  
3  4  1  
5  5  4  

1  1000  2  
2  2  3  
5  5  4  
3  4  1  

2  2  3  
1  1000  2  
5  5  4  
3  4  1  

2  2  3  
5  5  4  
1  1000  2  
3  4  1  

2  2  3  
5  5  4  
3  4  1  
1  1000  2  

5  5  4  
2  2  3  
3  4  1  
1  1000  2  

5  5  4  
3  4  1  
2  2  3  
1  1000  2  

5  5  4  
3  4  1  
1  1000  2  
2  2  3  

3  4  1  
5  5  4  
1  1000  2  
2  2  3  

3  4  1  
1  1000  2  
5  5  4  
2  2  3  

3  4  1  
1  1000  2  
2  2  3  
5  5  4  

1  1000  2  
3  4  1  
2  2  3  
5  5  4  

1  1000  2  
2  2  3  
3  4  1  
5  5  4  

1  1000  2  
2  2  3  
5  5  4  
3  4  1  

2  2  3  
1  1000  2  
5  5  4  
3  4  1  

2  2  3  
5  5  4  
1  1000  2  
3  4  1  

2  2  3  
5  5  4  
3  4  1  
1  1000  2

Para cada linha eu tenho 6 casos
com a linha —3 4 1— eu consegui gerar apenas
3 possibilidades estão faltando as outras 3 possibilidades:

3 4 1
5 5 4
2 2 3
1 1000 2

3 4 1
2 2 3
5 5 4
1 1000 2

3 4 1
2 2 3
1 1000 2
5 5 4

Será que alguém poderia me dar uma ajuda?

[]'s.

2 Respostas

leo.junior

Cara, o índice “i” não deveria variar até ser menor que 4 já que a sua matriz é 4 x 3? Veja abaixo:

for(int k = 0; k < 6; k++){  
    for(int i = 0; i < 4; i++){  
        for(int j = 0; j < 3; j++){
ricardocomp

Jóia leo.junior?
então se i == 4
então vai ocorrer o seguinte:

ArrayIndexOutOfBoundsException

pois eu tenho a seginte situação:

matriz[i][j] = matriz[i+1][j];

A matriz é 4x3 -->
para i == 4 eu vou ter i+1 = 5
então a Exception é lançada.

Será q tem como vc ou alguém me dar uma
ajuda?

[]'s.

Criado 20 de abril de 2010
Ultima resposta 20 de abr. de 2010
Respostas 2
Participantes 2