MultipMatriz.java

Publicado por Edson G. de Lima (última atualização em 08/05/2012)

[ Hits: 3.496 ]

Download MultipMatriz.java




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.

  



Esconder código-fonte

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 ("");
      }
   }
}

Scripts recomendados

Leitor de Comandos

Algoritmos para Teoria dos Números

Código para validar CPF e CNPJ otimizado

Algoritmo para Gerar um Sudoku NxN válido

Imagem de Background atravez de um JDesktopPane


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts