Estou tentando fazer uma função que receba uma matriz e retorne os elementos ACIMA da diagonal principal dessa matriz e estou tendo problemas com o retorno.
Meu código:
publicclassPrograma{staticint[]diagonalSecundaria(intmmatriz[][]){intcont=0;intdiag[]=newint[3];for(inti=0;i<mmatriz.length-1;i++){for(intj=1;j<mmatriz.length;j++){diag[i]=mmatriz[i][j];cont++;}}returndiag;}// --------------------- main ------------------------publicstaticvoidmain(String[]args){finalintTAMANHO_MATRIZ=3;intmatriz[][]=newint[TAMANHO_MATRIZ][TAMANHO_MATRIZ];// inicializa a matriz;for(inti=0;i<TAMANHO_MATRIZ;i++){for(intj=0;j<TAMANHO_MATRIZ;j++){matriz[i][j]=(int)(Math.random()*20);}}// Imprime a matriz;System.out.println("Matriz");for(inti=0;i<TAMANHO_MATRIZ;i++){for(intj=0;j<TAMANHO_MATRIZ;j++){if(j==TAMANHO_MATRIZ-1)System.out.print(matriz[i][j]+"\n");elseSystem.out.print(matriz[i][j]+"\t");}}System.out.println("");System.out.println(""+diagonalSecundaria(matriz));}}
para evitar dar estas doideras...eu sempre defino duas classes uma com os metodos e outra com a main...
isso de coisas estaticas para depois chamar a main () logo em baixo as vezs dá nessas loucuras...
Mas vejo isso depois Do Jantar...
1dois1dois
para evitar dar estas doideras…eu sempre defino duas classes uma com os metodos e outra com a main…
isso de coisas estaticas para depois chamar a main () logo em baixo as vezs dá nessas loucuras…
Vou tentar isso.
Alkamavo
import staticjava.lang.System.*;publicclassPrograma{staticint[]diagonalSecundaria(intmmatriz[][]){intcont=0;intdiag[]=newint[3];for(inti=0;i<mmatriz.length-1;i++){for(intj=1;j<mmatriz.length;j++){diag[i]=mmatriz[i][j];cont++;}}returndiag;}publicstaticvoidmain(String[]args){intTAMANHO_MATRIZ=3;intnmatix[][]=newint[TAMANHO_MATRIZ][TAMANHO_MATRIZ];//inicializa a matriz; for(inti=0;i<TAMANHO_MATRIZ;i++){for(intj=0;j<TAMANHO_MATRIZ;j++){nmatix[i][j]=(int)(Math.random()*20);}}// Imprime a matriz; System.out.println("ALkamavo Help");for(inti=0;i<TAMANHO_MATRIZ;i++){for(intj=0;j<TAMANHO_MATRIZ;j++){if(j==TAMANHO_MATRIZ-1)out.print(nmatix[i][j]+"\n");elseout.print(nmatix[i][j]+"\t");}}}}
Com a modificação do código feita por ‘ALkamavo’ a mensagem estranha não apareceu, correto. Mas as duas linhas system.out que foram apagadas tinham o objetivo de imprimir na tela os elementos acima da diagonal secundaria, por este motivo aquela mensagem estranaha não aparece.
No caso, eu quero que os elementos da diagonal principal seja armazenado no vetor diag[] e exibidos na tela.
Elementos acima da diagonal
[I@addbf1
EXECUTADO COM SUCESSO (tempo total: 0 segundos)
Ah, agora sei que o codigo estranho [color=red][I@addbf1 [/color] é o endereço de memória onde estar armazenado o vetor criado pela função diagonaSecundaria(). Agora me resta saber como ler este conteúdo, provavelmente terei de usar um for. Mas não sei ainda… não consegui
1dois1dois
Objetivo do programa: Passar uma matriz como parametro para uma função e inserir os elementos acima da diagona secundaria em um vetor.
No inicio estava tendo problemas para exibir o vetor com os elementos da diagonal secundaria criado na função diagonalSecundaria(). Esta me retornando o endereço de memória do vetor e não os elementos do vetor.
Para solucionar o problema criei um vetor auxiliar chamado diagSec, que recebe o endereço de memoria e apos isso criei um for para exibir os elementos do vetor. Enfim Resolvido! :lol:
packagequestao03;publicclassPrograma{staticint[]diagonalSecundaria(intmmatriz[][]){intaux=1;intcont=0;finalintTAMANHO_VETOR=3;// tamanho do vetor criado na função (depende da ordem da matriz);intdiag[]=newint[TAMANHO_VETOR];for(inti=0;i<mmatriz.length-1;i++){for(intj=0;j<mmatriz.length-aux;j++){diag[cont]=mmatriz[i][j];cont++;}aux++;}returndiag;}// --------------------- main ------------------------publicstaticvoidmain(String[]args){finalintTAMANHO_MATRIZ=3;intmatriz[][]=newint[TAMANHO_MATRIZ][TAMANHO_MATRIZ];intdiagSec[];// inicializa a matriz;for(inti=0;i<TAMANHO_MATRIZ;i++){for(intj=0;j<TAMANHO_MATRIZ;j++){matriz[i][j]=(int)(Math.random()*20);}}// Imprime a matriz;System.out.println("Matriz");for(inti=0;i<TAMANHO_MATRIZ;i++){for(intj=0;j<TAMANHO_MATRIZ;j++){if(j==TAMANHO_MATRIZ-1)System.out.print(matriz[i][j]+"\n");elseSystem.out.print(matriz[i][j]+"\t");}}System.out.print("Elementos acima da diagonal secundaria: ");diagSec=diagonalSecundaria(matriz);for(inti=0;i<diagSec.length;i++){System.out.print(diagSec[i]+"\t");}}}
Na linha 50-53 desse novo código é onde esta o detalhe!!!
valeu a ajuda ai moçada.
MrDataFlex
Não é nenhum endereço de memória, é a apenas a referencia na qual está apontando!