Passar metade de uma matriz por parâmetro

5 respostas
dfarias

Eu quero passar duas linhas de uma matriz por parâmetro.

int[][] m1 = {{1, 1, 1, 1}, {2, 2, 2, 2}, {3, 3, 3, 3}, {4, 4, 4, 4}};

Passar por parametro:

Array1={ 1, 1, 1, 1 }, { 2, 2, 2, 2 }

Array2 ={ 3, 3, 3, 3 },{ 4, 4, 4, 4 }

Como eu faço isso? :shock:

5 Respostas

P

Passe a matriz inteira.

Na outra classe você trabalha com ela divida. Nem é necessário criar dois vetores creio eu, apenas vc controlar as linhas da matriz.

dfarias

entao eu passo a matriz inteira mais o indice por parametro. hmn

vou tentar aqui.

dfarias

Não está funcionando . Segue abaixo:

public class Matrix {

    public static void main(String[] args) {
        new Matrix().test();
    }

    private void test() {

            int[][] m1 = {{1, 1, 1, 1}, {2, 2, 2, 2}, {3, 3, 3, 3}, {4, 4, 4, 4}};   
            int[][] m2 = {{1, 1, 1, 1}, {2, 2, 2, 2}, {3, 3, 3, 3}, {4, 4, 4, 4}}; 


        Linha[] somadoras = new Linha[m1.length];

        for (int i = 0; i <m1.length; i++) {
            for (int j = 0; j < m1.length; j ++) {
                somadoras[i] = new Linha(m1, i, j, (i+(m1.length)-1), (j+(m1.length)-1), m2, i, j, (i+(m1.length)-1), (j+(m1.length)-1));
            }

        }

        //testando...  
        somadoras[0].criarMatrizAPartirDePedacoOutra();
        somadoras[1].criarMatrizAPartirDePedacoOutra();

    }
}

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package matriximplementation;

/**
 *
 * @author User
 */
public class Linha {
    //
    int[][] matrizinternadathread;
    int[][] matrizinternadathread2;
    int x, y, linhas, colunas;


    public Linha(int[][] matriz,int x, int y, int linhas, int colunas,int[][] matriz2) {
        matrizinternadathread = matriz;
        matrizinternadathread2 = matriz2;
        this.x = x;
        this.y = y;
        this.linhas = linhas;
        this.colunas = colunas;
       
 
    }

    public void criarMatrizAPartirDePedacoOutra() {
        int[][] resultado = new int[matrizinternadathread.length][matrizinternadathread.length];


        for (int i = x; i <matrizinternadathread.length; i++) {
            for (int j = y; j <matrizinternadathread.length;j++) {
                resultado[i][j] = matrizinternadathread[i][j] + matrizinternadathread2[i][j];
                System.out.println( resultado[i][j]);
            }
        }
      
        }

    }
dfarias

Não consegui. Por favor, alguém me ajude. :?:

dfarias

A segunda matriz tá pegando os elementos certos. A primeira tá pegando tudo(o que não deveria acontecer), o certo era a primeira matriz ficar com os elementos que vão dos índices 0,0 até 1,3.

Segue abaixo minha modificação. Mais abaixo o resultado.
for (int i = 0; i <m1.length; i++) {
            for (int j = 0; j < m1.length; j ++) {
               
                    somadoras[0] = new Linha(m1, 0, 0, (i+(m1.length)-3), (j+(m1.length)-1), m2);
                    somadoras[1] = new Linha(m1, 2, 0, (i+(m1.length)-1), (j+(m1.length)-1), m2);
                
                
            }
        }

        //testando...  
        System.out.println("somadora 1");
        somadoras[0].criarMatrizAPartirDePedacoOutra();
        
        
        System.out.println("somadora 2");
        somadoras[1].criarMatrizAPartirDePedacoOutra();

somadora 1
2
2
2
2
4
4
4
4
6
6
6
6
8
8
8
8
somadora 2
6
6
6
6
8
8
8
8

Criado 5 de novembro de 2012
Ultima resposta 6 de nov. de 2012
Respostas 5
Participantes 2