MultipMatriz.java
Publicado por Edson G. de Lima (última atualização em 08/05/2012)
[ Hits: 3.879 ]
Script que realiza a multiplicação entre duas matrizes. Uma facilidade do script é que ele permite alimentar a ordem das matrizes e preencher os valores tanto de forma manual quanto randômica. Ideal para elaborar/corrigir exercícios.
import java.util.Scanner;
public class MultipMatriz {
   public static void main (String args[]) {
      Scanner leiaA = new Scanner (System.in);
      Scanner leiaB = new Scanner (System.in);
      Scanner leiaS = new Scanner (System.in);
      String sn = "s";
      int soma = 0;
      System.out.println ("\nEfetua a multiplicação entre duas matrizes");
      System.out.println ("------------------------------------------\n");
      System.out.println ("Entre com a ordem (m x n)da matriz A: ");
      int m = leiaA.nextInt ();
      int n = leiaA.nextInt ();
      int mA[][] = new int [m][n];
      System.out.println ("Entre com a ordem (0 x p) da matriz B: ");
      int o = leiaB.nextInt ();
      int p = leiaB.nextInt ();
      int mB[][] = new int [o][p];
      // verifica a possibilidade da multiplicação
      if (n != o) {
         System.out.println ("\nPor definição, a multiplicação destas matrizes não é possível.");
         System.out.println ("O número de colunas da matriz A deve ser igual ao número de linhas da matriz B.");
         System.out.println ("\nInterrompendo a execução...\n");
         System.exit (0);
      }else{
         System.out.println ("\nOrdem da matriz A: "+m+"x"+n);
         System.out.println ("\nOrdem da matriz B: "+o+"x"+p);
         System.out.println ("\nA ordem da matriz R será "+m+"x"+p);
      }
      int mR[][] = new int [m][p];
      System.out.println ("\nDeseja alimentar as matrizes com valores aleatórios?");
      sn = leiaS.nextLine();
      if (sn.equals ("s")) {
         for (int i=0; i<m; i++) {
            for (int j=0; j<n; j++) {
               mA[i][j] = (int)(Math.random()*10-5);
            }
         }
         for (int i=0; i<o; i++) {
            for (int j=0; j<p; j++) {
               mB[i][j] = (int)(Math.random()*10-5);
            }
         }
      }else{
         System.out.println ("\nOk, vamos para o preenchimento manual das matrizes: \n");
         for (int i=0; i<m; i++) {
            System.out.println ("Matriz A: valores da linha "+(i+1));
            for (int j=0; j<n; j++) {
               mA[i][j] = leiaA.nextInt();
            }
         }
         System.out.println ("");
         for (int i=0; i<o; i++) {
            System.out.println ("Matriz B: valores da linha "+(i+1));
            for (int j=0; j<p; j++) {
               mB[i][j] = leiaB.nextInt();
            }
         }
      }
      // imprimindo as matrizes
      System.out.println ("\nEscrevendo as matrizes: \n");
      System.out.println ("\nMATRIZ A:");
      for (int i=0; i<m; i++) {
         for (int j=0; j<n; j++) {
            System.out.print (mA[i][j]+"\t");
         }
         System.out.println ("");
      }
      System.out.println ("\nMATRIZ B:");
      for (int i=0; i<o; i++) {
         for (int j=0; j<p; j++) {
            System.out.print (mB[i][j]+"\t");
         }
         System.out.println ("");
      }
      /////// Processo para soma das multiplicações linha-coluna
      for (int i=0; i<m; i++) {
         for (int j=0; j<p; j++) {
            // apenas o k varia para "correr" as colunas de A da 1ª linha x com as linhas da 1ª coluna de B
            // a variação de k vai até o número de colunas de A, como iniciamos em 0, então vai até n-1
            for (int k=0; k<n; k++) {
               soma = soma+mA[i][k]*mB[k][j];
            }
            // a cada saída desse laço fazemos a composição dos valores da matriz resultante
            mR[i][j] = soma;
            // soma precisa zerar:
            soma = 0;
         }
      }
      // impressão da matriz resultante
      System.out.println ("\nImprimindo a matriz resultante (ordem "+m+"x"+p+"):");
      for (int i=0; i<m; i++) {
         for (int j=0; j<p; j++) {
            System.out.print (mR[i][j]+"\t");
         }
         System.out.println ("");
      }
   }
}
Pesquisa Ternária em um vetor ordenado
Determinante de uma matriz de ordem 3.
Código para validar CPF e CNPJ otimizado
Exemplo de sobrecarga de métodos
Nenhum comentário foi encontrado.
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?
Instalação dualboot Windows 11 e Debian 13 (0)
Programa fora de escala na tela do pc (33)
Eu queria adicionar a incon do wifi e deixa transparente no fluxbox no... (0)









