Boas a todos estou cm duvida com relaçao a este exercicio de como trasponho a matriz alguma sugestao?? Agradeço desde ja o exclarecimento …
Irei postar o codigo de como estou fazendo a matriz , aminha duvida e de como farei para transpola…
Considere que cada elemento em uma matriz está posicionado em uma combinação de linhas (x) e colunas (y).
Assim sendo, a matriz transposta coloca os elementos da matriz base, invertendo a posição dos elementos, enquanto o elemento matriz[x][y] está em [x][y] na matriz base, na matriz transposta ele estará em [y][x]
thiago.sydow
Se você reparar, a tranposta é somente os índices invertidos.
Na posição i=1 j=2 temos o valor 5, na transposta, esse valor 5 vai para a posição i=2 j=1, repare que você somente precisa
inverter os indíces na matriz transposta, quando for percorrer a matriz.
se você fizer um for, percorrendo a matriz original, você pode apenas inverter i com j, que resultará na transposta.
Vê se isso ajuda, se ainda assim não souber como fazer, posso postar um exemplo depois.
drsmachado respondeu antes rsrs…
marcelo.bellissimo
A idéia da matriz transposta é transformar as linhas em colunas, invertendo suas dimensões.
É só seguir a lógica, leia os itens de cada linha e jogue-os em colunas…
Primeiro crie a matriz pra receber os valores, invertendo as dimensões… se a matriz original é [x][y] , a transposta vai ter dimensão [y][x].
Depois, itere pelas linhas, invertendo as posições dos itens…
[0][0] vira [0][0]
[0][1] vira [1][0]
[0][2] vira [2][0]
…
[1][0] vira [0][1]
[1][1] vira [1][1]
[1][2] vira [2][1]
Sacou? A lógica é essa, agora a implementação você faz, a intenção é essa não é?
F
fc40940
valeu pela ajuda vou ver se consigo fazer isso …
depois posto o codigo …
abraços…
E
entanglement
Dica: crie um método que transponha qualquer matriz. Digamos que você queira transpor uma matriz de double. É bem fácil fazer isso:
importjava.util.*;publicclassMain{/** * @param args the command line arguments *//* private static MAXLINHAS = 20; private static MAXCOLUNAS = 20;*/publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);//lê o numero de linhasSystem.out.print("Quantas linhas tem a matriz? ");intnLinhas=sc.nextInt();// lê o numero de colunasSystem.out.print("E quantas colunas ");intnColunas=sc.nextInt();//declara e lê a matrizint[][]matriz=leMatriz(nLinhas,nColunas,sc);//imprime a matriz no écran para verificaçãofor(inti=0;i<nLinhas;i++){for(intj=0;j<nColunas;j++)System.out.print(matriz[i][j]+" ");System.out.println();}}publicstaticint[][]leMatriz(intnLinhas,intnColunas,Scannersc){int[][]matriz=newint[nLinhas][nColunas];for(inti=0;i<nLinhas;i++)for(intj=0;j<nColunas;j++)matriz[i][j]=leIntPositivo(sc);returnmatriz;}publicstaticintleIntPositivo(Scannersc){intn=-1;do{System.out.print(" :");if(sc.hasNextInt())n=sc.nextInt();else{sc.next();n=-1;}}while(n<=0);returnn;}publicstaticinttrasPosta(int[][]entrada){int[][]matriztrasposta=newint[entrada[0].length][entrada.length];int[][]teste=newint[][];for(inti=0;i<entrada[0].length;i++)for(intj=0;j<entrada.length;j++)teste[i][j]=matriztransposta[j][i];}
bem pessoal posto meu codigo aqi mas estou com duvidas,n posso invocar o metodo matriz dentro do metodo transPosta?nao estou conseguindo
e peço a ajuda de voces com relaçao ao codigo da transposta n sei se esta correto.
Estou a ter um pouco de dificuldade com java e meu primeiro semestre de java ...por isso as muitas duvidas...
F
fc40940
E gostaria de saber se o codigo no geral esta bom ou poderia melhorar isto??
testei os dois exemplos q me passou marcio mas n consegui transpor a matriz ,n sei se fiz certo mas a saida ficou assim
Quantas linhas tem a matriz? 3
E quantas colunas 2
:1
:2
:3
:4
:5
:6
1 2
[[I@13caecd2 4
[[I@f843865 6
[[I@1194a4e
n sei o q estou fazendo de errado??
F
fc40940
//imprimeamatriznoécranparaverificaçãofor(inti=0;i<nLinhas;i++){for(intj=0;j<nColunas;j++)System.out.print(matriz[i][j]+" ");System.out.println();matriz=trasPosta(matriz);System.out.print(matriz);}/* int [][] matriztransposta=new int [nColunas][nLinhas]; for (int i=0;i<nLinhas;i++) for (int j=0;j<nColunas;j++) matriztransposta[i][j]= matriz[j][i]; System.out.print(matriz); System.out.println();*/