MultipMatriz.java

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

[ Hits: 3.190 ]

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

Diferenca entre meses - um método de busca simples

Conversor de bases

Pesquisa Ternária em um vetor ordenado

Determinante de uma matriz de ordem 3.

Calcula as chances de se ganhar na mega-sena.


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts