How to use function to sum 3 matrices

Asked

Viewed 44 times

0

I’m having trouble creating a function. I have my program ready, but I’m doing an exercise where the function is mandatory and I’m not getting.

Java

   public static void main(String[] args) {
        Random aleatorio = new Random();

        Scanner input = new Scanner(System.in);
        System.out.print("Digite a quantidade de linhas das matrizes: ");
        int linhas = input.nextInt();
        System.out.print("Digite a quantidade de colunas das matrizes: ");
        int colunas = input.nextInt();

 /      
 int[][] matriz1 = new int[linhas][colunas];
        for (int i = 0; i < matriz1.length; i++) {
            for (int j = 0; j < matriz1[i].length; j++) {
                matriz1[i][j] = aleatorio.nextInt(9);
                System.out.printf("%d ", matriz1[i][j]);
            }
            System.out.println();
        }
 \

//Para fazer a matriz 2 e 3 copiei a parte de cima (A parte entre / \ )
   

//Aqui na soma é onde preciso de uma função

        int[][] resultado = new int[linhas][colunas];

        if (linhas == colunas){
            for (int i = 0; i < resultado.length; i++) {
                for (int j = 0; j < resultado[i].length; j++) {
                    resultado[i][j] = matriz1[i][j] + matriz2[i][j] + matriz3[i][j];
                    System.out.printf("%d ", resultado[i][j]);
                }
                System.out.println();
            }
        }else{
            System.out.printf("A soma nao eh possivel");
        }
        input.close();
    }
}

1 answer

0


Just create the function that receives the 3 matrices (and the sizes) and returns the result:

static int[][] soma(int linhas, int colunas, int[][] matriz1, int[][] matriz2, int[][] matriz3) {
    int[][] resultado = new int[linhas][colunas];

    for (int i = 0; i < resultado.length; i++) {
        for (int j = 0; j < resultado[i].length; j++) {
            resultado[i][j] = matriz1[i][j] + matriz2[i][j] + matriz3[i][j];
        }
    }
    return resultado;
}

And in the main, just call the function by passing the data:

// passa a matrizes a serem somadas, e a quantidade de linhas e colunas
int[][] resultado = soma(linhas, colunas, matriz1, matriz2, matriz3);

// depois, faz o que quiser com o resultado
for (int[] linha : resultado) {
    for (int valor : linha) {
        System.out.printf("%5d", valor);
    }
    System.out.println();
}

I could also take the size of one of the matrices - in this case, I’m assuming that the sizes are compatible:

static int[][] soma(int[][] matriz1, int[][] matriz2, int[][] matriz3) {
    int linhas = matriz1.length;
    int colunas = matriz1[0].length;
    int[][] resultado = new int[linhas][colunas];

    for (int i = 0; i < resultado.length; i++) {
        for (int j = 0; j < resultado[i].length; j++) {
            resultado[i][j] = matriz1[i][j] + matriz2[i][j] + matriz3[i][j];
        }
    }
    return resultado;
}

// e no main
int[][] resultado = soma(matriz1, matriz2, matriz3);

I removed the if (linhas == colunas) because it doesn’t make sense. The only condition that prevents the sum is if the matrices have different dimensions (but if the number of rows and columns is different, it does not prevent, since all have the same size: for example, all could be 4 x 2, or 10 x 20, etc, that the sum would remain possible).

  • I tried to do iso and put in the main that: int[][] result = sum(rows, columns, matriz1, matriz2, matriz3); System.out.println("Sum of matrices = " + result); But hence the sum result does not work, and says: Sum of matrices = [[I@511baa65

  • @boltJu If you print an array directly, the result will be this one (there is an explanation here) - If you want to print the values, you have to do the for what I did there (for (int[] linha : resultado) etc..)

Browser other questions tagged

You are not signed in. Login or sign up in order to post.