Verificar se duas matrizes são permutáveis

2 respostas
L

Boas tardes pessoal, eu gostava de saber se alguém me pode ajudar a verificar se duas matrizes são permutáveis, ou seja, se a matriz AB é igual à matriz BA, eu não sei mesmo como fazer isso é para um trabalho de faculdade, eu já fiz código para criar duas matrizes e fazer operações com elas, só não sei essa parte…

package algebra1;

import java.util.Scanner;

public class Main {

public static Scanner entr=new Scanner(System.in);

public static int menu(Scanner entr) {

System.out.println("1 - Determinar se a matriz é simétrica ");

System.out.println("2 - Determinar a matriz transposta ");

System.out.println(0 - sair);

return entr.nextInt();
}
public static void simetrica(int[][]matriz, int linhas) 
{
    int i,j,colunas;
    colunas=linhas;
    for (i=0; i<linhas; i++)
    {
        for (j=i+1; j<colunas; j++)
        {
            if (matriz[i][j]!=matriz[j][i])
                break;  
        }
        if(j<colunas)
            break;
        
    }
        System.out.println();
   
    if (i<linhas)
           System.out.println("Não é simétrica");
    else
           System.out.println("É simétrica");
    
}  

public static void transposta(int[][]matriz,int linhas) {
    int i,j,colunas;
    colunas=linhas;
    
    for(i=0; i<linhas; i++)
    {
        for(j=0; j<colunas;j++)
        {
            System.out.print(matriz[j][i]+" ");
        }
        System.out.println();
    }
       
}

public static void main(String[] args) {
    int i,j,colunas,linhas,op;
    System.out.println("Introduza número de linhas(=número de colunas)");
    linhas=entr.nextInt();
    colunas=linhas;
    char vec[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
    System.out.println("Introduza os números que constituem as linhas da matriz");
    int matriz[][]=new int[linhas][colunas];
    for (i=0; i<linhas; i++) 
        for (j=0; j<colunas; j++)
          matriz[i][j]=entr.nextInt();
    for(i=0; i<linhas; i++)
    {
        for(j=0; j<colunas;j++)
        {
            System.out.print(matriz[i][j]+" ");
        }
        System.out.println();
    }
    System.out.println();
    while((op=menu(entr))!=0)
    {
        switch (op) 
        {
            case 0: break;
            case 1: simetrica(matriz,linhas); break; 
            case 2: transposta(matriz,linhas); break;
            default: System.out.println("Opção inválida");
            }
    }
    }

}

Por favor ajudem…

2 Respostas

ViniGodoy

Quando for colocar código, use a tag code.

Para comparar você pode criar o método:

public static boolean ePermutavel(int[][] matriz, int[][] matriz2) { for (int i = 0; i &lt matriz.length; i++) for (int j = 0; j &lt matriz[i].length; j++) if (matriz[i][j] != matriz2[i][j]) return false; return true; }

L

Peço desculpa, mas eu não consigo pôr o código a correr...

Construi o código assim:

package algebra1;

import java.util.Scanner; 
public class Main { 
public static Scanner entr=new Scanner(System.in); 
public static int menu(Scanner entr) { 
System.out.println("1 - Determinar se a matriz é simétrica "); 
System.out.println("2 - Determinar a matriz transposta "); 
System.out.println("0 - sair"); 
return entr.nextInt(); 


} 
public static void simetrica(int[][]matriz, int linhas) 
{ 
int i,j,colunas; 
colunas=linhas; 
for (i=0; i<linhas; i++) 
{ 
for (j=i+1; j<colunas; j++) 
{ 
if (matriz[i][j]!=matriz[j][i]) 
break; 
} 
if(j<colunas) 
break; 

} 
System.out.println(); 

if (i<linhas) 
System.out.println("Não é simétrica"); 
else 
System.out.println("É simétrica"); 

} 

public static void transposta(int[][]matriz,int linhas) { 
int i,j,colunas; 
colunas=linhas; 

for(i=0; i<linhas; i++) 
{ 
for(j=0; j<colunas;j++) 
{ 
System.out.print(matriz[j][i]+" "); 
} 
System.out.println(); 
} 

} 
public static boolean ePermutavel(int[][] matriz, int[][] matriz2) {
    for (int i = 0; i < matriz.length; i++)
       for (int j = 0; j < matriz[i].length; j++)
          if (matriz[i][j] != matriz2[i][j])
              return false;
    return true;
 }

public static void main(String[] args) { 
int i,j,colunas,linhas,op; 
System.out.println("Introduza número de linhas(=número de colunas)"); 
linhas=entr.nextInt(); 
colunas=linhas; 
char vec[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; 
System.out.println("Introduza os números que constituem as linhas da matriz"); 
int matriz[][]=new int[linhas][colunas]; 
for (i=0; i<linhas; i++) 
for (j=0; j<colunas; j++) 
matriz[i][j]=entr.nextInt(); 
for(i=0; i<linhas; i++) 
{ 
for(j=0; j<colunas;j++) 
{ 
System.out.print(matriz[i][j]+" "); 
} 
System.out.println(); 
} 
System.out.println(); 
while((op=menu(entr))!=0) 
{ 
switch (op) 
{ 
case 0: break; 
case 1: simetrica(matriz,linhas); break; 
case 2: transposta(matriz,linhas); break; 
default: System.out.println("Opção inválida"); 
} 
} 
} 

}

Sabe-me dizer qual o erro???

Criado 13 de janeiro de 2007
Ultima resposta 15 de jan. de 2007
Respostas 2
Participantes 2