Dúvida sobre trabalho escolar

3 respostas
ashibarai

Boas galera brasileira!

Então é assim, foi-me proposto um trabalho na faculdade em k eu ando, que m pedia para fazer um programa k pedisse 2 matrizes, e que de seguida o programa fizesse a multiplicaçao dessas mesmas matrizes introduzidas… ja tenho a parte do codigo necessaria, excepto a parte da multiplicaçao que nao sei fazer :expressionless: a gente faz os programas importando o javax.swing.JOptionPane… eu n tenho bases de programaçao por isso tou um bocado aflito :slight_smile: se m puderem ajudar…

Aki vai o pedaço de código k tenho até agr:

import javax.swing.JOptionPane;

public class Main {

public static void main(String[] args) {

    int [][] MatrizA = new int[100][100];
    int [][] MatrizB = new int[100][100];
    int [][] MatrizC = new int[100][100];

    String a,b,c,d,numero;
    int nlinhas_A,nlinhas_B,ncolunas_A,ncolunas_B,j,q,w,i,x,t;
    
    do {
        // introduzir a matriz A
        
    a=JOptionPane.showInputDialog("Introduza o número de linhas da matriz A:","Linhas?");
    nlinhas_A=Integer.parseInt(a);
    b=JOptionPane.showInputDialog("Introduza o número de colunas da matriz A:","Colunas?");
    ncolunas_A=Integer.parseInt(b);
        
        // introduzir a matriz B
    
    c=JOptionPane.showInputDialog("Introduza o número de linhas da matriz B:","Linhas?");
    nlinhas_B=Integer.parseInt(c);
    d=JOptionPane.showInputDialog("Introduza o número de colunas da matriz B:","Colunas?");
    ncolunas_B=Integer.parseInt(d);
    
    // verificaçao do numero linhas/colunas da matriz A e B
    
    if ( ncolunas_A != nlinhas_B ) {
        JOptionPane.showMessageDialog(null,"O número de colunas da matriz A não é igual ao número linhas da matriz B.\n Por favor introduza de novo o número de linhas/colunas da matriz A/B, \n de modo a que o número de colunas da matriz A seja igual ao número de colunas da matriz B.", "Erro", JOptionPane.ERROR_MESSAGE);
    }
    }
    while ( ncolunas_A != nlinhas_B );

    // valores dos elementos da matriz A
    
    for (i=1;i<=nlinhas_A;i++) {
        for (j=1;j<=ncolunas_A;j++) {
            numero=JOptionPane.showInputDialog("Introduza o valor de a[" + i + "],[" + j + "] :","Valores?");
            MatrizA[i][j]=Integer.parseInt(numero);
        }
    }
    
    // valores dos elementos da matriz B
        
    for (q=1;q<=nlinhas_B;q++) {
        for (w=1;w<=ncolunas_B;w++) {
            numero=JOptionPane.showInputDialog("Introduza o valor de b[" + q + "],[" + w + "] :","Valores?");
            MatrizB[q][w]=Integer.parseInt(numero);
        }
    }
    
    // resoluçao
    
    JOptionPane.showMessageDialog(null,"A matriz multiplicação (C) é:","Multiplicação",JOptionPane.INFORMATION_MESSAGE);
    
    
    
    }
    
}</blockquote>

** Já agr se m puderem explicar cm se faz a transposta de uma matriz :slight_smile: aki está outro bocado d codigo d uma programa k ja fiz, mas falta a transposta :slight_smile: a parte da apresentaçao da matriz da mal pk aparece um “null” a mais, e por isso n alinha a 1ª linha da matriz…

import javax.swing.JOptionPane;

public class Main {

public static void main (String [] args) {
    
    int matrizA[][] = new int[100][100];
    int matrizB[][] = new int[100][100];
    
    String a,numero, res = null, ress = null;
    int lc,b,c,T;
    
    // Pedido do número de linhas/colunas e os elementos de uma dada matriz á escolha;
    // Admite-se que não se pode introduzir matriz não quadrada;
    
    a=JOptionPane.showInputDialog("Qual o número de linhas/colunas da matriz? (matriz quadrada) :");
    lc=Integer.parseInt(a);
    
    for (b=1;b<=lc;b++) {
        for (c=1;c<=lc;c++) {
            numero=JOptionPane.showInputDialog("Introduza o valor de a[" + b + "][" + c + "] :");
            matrizA[b][c]=Integer.parseInt(numero);
        }
    }
    
    for (b=0;b<=lc;b++) {
        for (c=0;c<=lc;c++) {
            b += 1;
            c += 1;
           res = res + String.format("% 10d",matrizA[b][c]);
           b -= 1;
           c -= 1;
        }
        res = res + "\n";
    }
    JOptionPane.showMessageDialog(null,"A matriz que inseriu é: \n" + res);
    
    // Cálculo da matriz transposta;
    
    JOptionPane.showMessageDialog(null, "A matriz está completa!");
    JOptionPane.showMessageDialog(null, "Ao efectuarmos a matriz transposta (A^T) da matriz A obtemos:");
    
    // falta calculo da transposta
    
    for (b=1;b<=lc;b++) {
        for (c=1;c<=lc;c++) {
            b += 1;
            c += 1;
            matrizB[c][b] = matrizB[c][b] + matrizA[b][c];
            b -= 1;
            c -= 1;
        }
    }
   
    // apresentaçao da matriz transposta
    
    for (c=0;c<=lc;c++) {
        for (b=0;b<=lc;b++) {
            b += 1;
            c += 1;
           ress = ress + String.format("% 10d",matrizB[c][b]);
            b -= 1;
            c -= 1;
        }
        ress = ress + "\n";
    }
    JOptionPane.showMessageDialog(null,"A matriz transposta é: \n" + res);
    
   /* // Verifica se a matriz é ou não simétrica;
    
T=0;
    for (b=1;b<=lc;b++)
        for (c=1;c<=lc;c++) {
        
        if ( matrizA[b][c]!=matrizB[b][c] ) {
                  T = 0;
                  break;
              }
        else
              T = 1;
        }
              if ( T == 1 ){
                JOptionPane.showMessageDialog(null, "A matriz introduzida pelo utilizador é simétrica!");
              }
              else
              JOptionPane.showMessageDialog(null,"A matriz introduzida pelo utilizador não é simétrica!");
    
        JOptionPane.showMessageDialog(null,"O programa terminou!");
    */}

}

Entrei um bocado a pressao mas tou a precisar d ajuda e confio aki no pessoal :slight_smile:

Obrigado!

3 Respostas

paulorb.pacheco

Ae cara… eu nem consegui entender qual seu real problema… :?: :frowning:
Vc deve ser de portugual, não?

[]´s
flw

cassio

Olá,

Aqui tem um exemplo de multiplicação de matrizes, acho que dá pra vc pegar a idéia. Na verdade tem vários métodos que diferem no tempo de execução. Veja qual você acha mais fácil de compreender, eles são bem parecidos :slight_smile:

Para fazer a transposta, basta vc trocar as linhas pelas colunas. Se com dois laços for aninhados vc percorrer a matriz original, pode usar os indices i e j para indicar, respectivamente, linha e coluna na matriz transposta. Assim, basta ler como [ j ][ i ] na matriz original e escrever na posição [ i ][ j ] da transposta.

int[][] matriz = new int[10][5];

//aqui vai o código para inicialização da matriz...

//perceba a inversão nas dimensões da transposta em relação às dimensòes da matriz original...
int[][] transposta = new int[matriz[0].length][matriz.length];

for(int i = 0; i &lt matriz.length; i++)
   for(int j = matriz[0].length; j++){
      transposta[i][j] = matriz[j][i];   
   }

Abraço!

ashibarai

cassio mt obrigado! ajudou imenso!

Criado 5 de janeiro de 2007
Ultima resposta 9 de jan. de 2007
Respostas 3
Participantes 3