Exemplo de Matriz com Multiplicação)

Olá todos.

Gostaria compartilhar um exemplo que fiz (com ajuda) de uma matriz.
Agora eu gostaria de implementar a multiplicação, mas não tenho a mínima idéia de como fazer.

Estou perguntando aqui porque já perguntei a 2 professores e nessa parte os mesmos não conseguiram resolver ou não explicararam com clareza. (Claro, eles olharam rapidamente, creio que por isso que não souberam me informar).

Agradeço

[code]import java.util.Scanner;

public class matriz {

/**
 * @param args
 */
public static void main(String[] args) {
	/**
	 * author: Eduardo Alves
	 * 
	 * @param args
	 */

	int quantLinhasA, quantColunasA, quantLinhasB, quantColunasB;

	Scanner entrada = new Scanner(System.in);
	
	/*Define o tamanho da matriz, de acordo com o que o usuário digitar*/
	System.out.println("Matriz A:");
	System.out.println("Digite a Quantidade de linhas ");
	quantLinhasA = entrada.nextInt();

	System.out.println("Digite a Quantidade de Colunas: ");
	quantColunasA = entrada.nextInt();

	System.out.println("Matriz B:");
	System.out.println("Digite a Quantidade de linhas ");
	quantLinhasB = entrada.nextInt();

	System.out.println("Digite a Quantidade de Colunas: ");
	quantColunasB = entrada.nextInt();
	
	/*Define o array de acordo com o que foi digitado (ex: Matriz 2x3)*/
	/*"i"  corresponde ao valor da linha e "j" corresponde a coluna, "A" é Matriz*/
	int a[][] = new int[quantLinhasA][quantColunasA];
	int iA, jA;	 

	int b[][] = new int[quantLinhasB][quantColunasB];
	int iB, jB;

            /*Desenha a matriz e recebe os valores*/
	System.out.println("Matriz A*");
	for (iA = 0; iA < quantLinhasA; iA++) {
		for (jA = 0; jA < quantColunasA; jA++) {
			System.out.println("Digite a linha: " + iA + " Digite a Coluna: " + jA);
			a[iA][jA] = entrada.nextInt();

		}

	}

	for (iA = 0; iA < quantLinhasA; iA++) {
		for (jA = 0; jA < quantColunasA; jA++) {
			
			/*Imprime 'bonitinho'(Formatado)*/
			System.out.printf("%3d   ", a[iA][jA]);
		}

		System.out.println();

	}
              
             /*Mesma coisa, só que aqui é a Matriz B*/
	System.out.println("Matriz B*");
	for (iB = 0; iB < quantColunasB; iB++) {
		for (jB = 0; jB < quantColunasB; jB++) {

			System.out.println("Digite a Linha: " + iB+ " Digite a Coluna: " + jB);
			b[iB][jB] = entrada.nextInt();

		}
	}

	for (iB = 0; iB < quantLinhasB; iB++) {
		for (jB = 0; jB < quantColunasB; jB++) {

			System.out.printf("%3d    ", b[iB][jB]);
		}
	
		System.out.println();
	}
	
	/*Condição necessária para Multiplicar a Matriz*/
	if (quantColunasA == quantLinhasB) {
             /*Aqui eu não sei o que fazer
               eu poderia simplesmente  fazer a[0][0]*b[0][0] por exemplo, mas não dá pra definir isso no código, visto que  a matriz pode ter tamanhos diferentes*/

	}


}

}

[/code]

Ola edudx,

Da uma olhada nestes exemplos talvez te ajude.

http://jgabriellima.wordpress.com/2009/09/04/matrizes-com-java-trasposta-inversa-multiplicacao-sem-complicacao

mas se as matrizes terão mesmo tamanho esse ex. a[0][0]*b[0][0] serve não?

luxu, as matrizes não terão mesmo tamanho.
Porque eu quero digitar por exemplo Matriz A: 2x3 Matriz B 3x2
A Condição para a multiplicação é que o número de colunas da matriz A seja igual ao número de linhas da matriz B.

Allexb10, olhei lá, mas já tinha visto algo semelhante, ainda não é o que quero pois lá já tem definido o tamanho e valores das matrizes, mas eu acho complicado o cálculo (neste caso o produto) quando é para inserir esses valores manualmente.

Obrigado pelas respostas.

exemplifique o q ker…tá meio confuso…

Quando pedir a matriz A, digite por exemplo 2 x 3 (2 linhas, 3 colunas)

Quando pedir a matriz B, digite por exemplo 3 x 2 (3 linhas, 2 colunas)

O que eu quero ?
O Produto da Matriz A pela Matriz B.

Exemplo:

Entende que não é só multiplicar os índices (a[0][0]*b[0][0] a[0][1]*b[1][0] …) ?
Porque essa multiplicação vai depender do tamanho da matriz.

É mais ou menos por ai.

kra pq vc num programa primeiro esse exemplo e dps vai alterando…

Sim, já fiz assim.

Agora estava tentando fazer dessa outra forma.
Mostrei ainda agora pra um professor ele disse “É, vou analisar isso porque é meio complicado” rsrs.


for(int i=0;i<quantLinhasA;i++)
		{
			for(int j=0;i<quantColunasb){
				b[i][j]*b[j][i];
			}
		}

Você vai fazer algo desse tipo, de modo que o for interno percorra uma mesma linha multiplicando uma coluna, logico que você precisa de uma “terceira” matriz, onde guardar os valores. mas o PRINCIPIO é esse. tente entender melhor como fazer o laço, a solução vai ficar mais clara depois disso.

Abraço

Após muita briga, consegui fazer a multiplicação, o problema era porque eu não estava criando uma variável para percorrer a matriz.

Implemente o Swing, agora a pergunta, como faço para exibir o resultado final em uma janelinha ? JTextArea ?

[code]import java.util.Scanner;

import javax.swing.JOptionPane;

public class MatrizFinal {

/**
 * @param args
 */
public static void main(String[] args) {

	Scanner entrada = new Scanner(System.in);

	int quantLinhasA, quantColunasA, quantLinhasB, quantColunasB, linhaA, colunaA, linhaB, colunaB, aux = 0;

	quantLinhasA = Integer.parseInt(JOptionPane("[Matriz A] Digite a quantidade de Linhas:"));
	quantColunasA = Integer.parseInt(JOptionPane("[Matriz A] Digite a quantidade de Colunas:"));

	quantLinhasB = Integer.parseInt(JOptionPane("[Matriz B] Digite a quantidade de Linhas:"));
	quantColunasB = Integer.parseInt(JOptionPane("[Matriz B] Digite a quantidade de Colunas:"));

	int matrizA[][] = new int[quantLinhasA][quantColunasA];
	int matrizB[][] = new int[quantLinhasB][quantColunasB];
	int resultante[][] = new int[quantLinhasA][quantColunasB];

	for (linhaA = 0; linhaA < quantLinhasA; linhaA++) {
		for (colunaA = 0; colunaA < quantColunasA; colunaA++) {
			matrizA[linhaA][colunaA] = Integer.parseInt(JOptionPane("[Matriz A] Informe o valor da  "+ linhaA + " coluna " + colunaA + " :"));
		}
	}

	for (linhaB = 0; linhaB < quantLinhasB; linhaB++) {
		for (colunaB = 0; colunaB < quantColunasB; colunaB++) {
			matrizB[linhaB][colunaB] = Integer.parseInt(JOptionPane("[Matriz B] Informe o valor da  "+ linhaB + " coluna " + colunaB + " :"));

			for (linhaA = 0; linhaA < quantLinhasA; linhaA++) {
				for (colunaA = 0; colunaA < quantColunasB; colunaA++) {
					for (int k = 0; k < quantLinhasB; k++) {
						aux = aux + matrizA[linhaA][k]* matrizB[k][colunaA];
					}

					resultante[linhaA][colunaA] = aux;
					aux = 0;
				}
			}
		}
	}

	System.out.println("Resultante:-");

	for (linhaA = 0; linhaA < quantLinhasA; linhaA++) {
		for (colunaA = 0; colunaA < quantColunasB; colunaA++)
			System.out.print(resultante[linhaA][colunaA] + "\t");

		System.out.print("\n");
	}
}

}[/code]

Obs: ainda tá faltando alguns critérios, mas o que eu queria já consegui, que é multiplicar.