Sou novo no mundo da programação e me deparei com um problema que precisa passar os valores de um array por parâmetro. Pesquisei algumas formas de fazer em diversos fóruns, mais nem um se adequou (ou pelo menos eu não conseguir fazer) de uma forma que soluciona-se o meu problema. (no inicio do código estará comentado vocês conseguiram entender o problema)
identar texto pre-formatado em 4 espaços
/*
- Fazer um programa em Java que leia uma matriz de no máximo 10 linhas por 10 colunas e que faça a multiplicação
- dessas matrizes. A multiplicação das matrizes deve ser feita em uma sub-rotina com passagem das matrizes por parâmetro.
- O programa deve solicitar do usuário a ordem das matrizes antes de lê-las e checar se as matrizes podem ser multiplicadas
- (pesquisar qual o pré-requisito para a multiplicação de matrizes) e caso as ordens digitadas não esteja de acordo informar
- ao usuário e solicitar novamente ou oferecer uma forma para que o usuário não execute o programa.
- AUTOR:
- Anderson S. Leite
*/
package ifba_semestre_primeiro.trabalho_algoritmos;
import java.util.Scanner;
public class copia_AGN_Q01 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int linhasA=0, linhasB=0, colunasA=0, colunasB=0, somatoria;
boolean ok = false;
int continuar = 1;
while(ok == false && continuar == 1 ) {
//entrada de dados (dimensoes das matrizes)
System.out.print("Digite a quantidade de linhas da matriz A: ");
linhasA = sc.nextInt();
System.out.print("Digite a quantidade de colunas da matriz A: ");
colunasA = sc.nextInt();
System.out.print("Digite a quantidade linhas de da matriz B: ");
linhasB = sc.nextInt();
System.out.print("Digite a quantidade de colunas da matriz B: ");
colunasB = sc.nextInt();
//analisa se as dimensoes digitadas sao validas
if(linhasA < 11 && linhasB < 11 && colunasA < 11 && colunasB < 11) {
if(linhasA == colunasB && linhasB == colunasA) {
ok = true;
System.out.println("\nValores aceitos");
} else {
System.out.println("\nAs dimensões das matrizes informadas são invalidas!\nElas não podem ser multiplicadas entre si!");
System.out.print("\nPor favor presione 1 para digitar novamente ou 0 para encerrar o programa\n=> ");
continuar = sc.nextInt();
}
} else { // linhasA < 11 && linhasB < 11 && colunasA < 11 && colunasB < 11
System.out.println("O tamanho exerdeu o limite, no maximo 10 linhas por 10 colunas");
System.out.print("\nPor favor presione 1 para digitar novamente ou 0 para encerrar o programa\n=> ");
continuar = sc.nextInt();
}
}
int[][] matrizA = new int[linhasA][colunasA];
int[][] matrizB = new int[linhasB][colunasB];
//atribui valor na matriz A
System.out.println("\n__________Matriz A__________");
for(int linha = 0; linha < linhasA; linha++) {
for(int coluna = 0; coluna < colunasA; coluna++) {
System.out.print("Digite o elemento da limha " + (linha +1) + " coluna " + (coluna +1) + " : ");
matrizA[linha][coluna] = sc.nextInt();
}
}
//atribui valor na matriz B
System.out.println("\n__________Matriz B__________");
for(int linha = 0; linha < linhasB; linha++) {
for(int coluna = 0; coluna < colunasB; coluna++) {
System.out.print("Digite o elemento da linha " + (linha +1) + " coluna " + (coluna +1) + " : ");
matrizB[linha][coluna] = sc.nextInt();
}
}
//ESTA PARTE PRECISA SER PASSADA POR PARAMETRO
//produto de AXB
int[][] produtoMatriz = new int[linhasA][colunasB];
for(int i = 0; i < linhasA; i++) {
for(int j = 0; j < colunasB; j++) {
somatoria = 0;
for(int k = 0; k < matrizA[0].length; k++) {
int produto = matrizA[i][k] * matrizB[k][j];
somatoria += produto;
}
produtoMatriz[i][j] = somatoria;
}
}
//exibi produto do array
System.out.println("\nProduto das matrizes AxB");
for(int linha = 0; linha < linhasA; linha++ ) {
for(int coluna = 0; coluna < colunasB; coluna++ ) {
System.out.println("Limha " + (linha +1) + " coluna " + (coluna +1) + " : " + produtoMatriz[linha][coluna]);
}
}
}
}