importjava.util.Scanner;publicclassDeterminante{privatestaticintdimensao=0;staticScannerdigite=newScanner(System.in);publicstaticvoidmain(String[]args){System.out.println("\n Digite a dimensão para MAT..:");dimensao=digite.nextInt();if(dimensao>3){System.out.println(" no momento so pode ser de 3 x 3 ..:");}intlinha=0,coluna;// vetor começa do zerodoubledet;doublemat[][]=newdouble[dimensao][dimensao];while(linha<3){coluna=0;while(coluna<3){System.out.println("\n Digite valorespara MAT ["+(linha+1)+"] ["+(coluna+1)+"]");Scanneralpha=newScanner(System.in);mat[linha][coluna]=alpha.nextDouble();coluna++;}linha++;}det=((mat[0][0]*mat[1][1]*mat[2][2])-(mat[0][2]+mat[1][1]+mat[2][0]));System.out.println("O determinante dessa matriz é: "+det);}}
minhaduvidaéaquiestoucalculandoadetdeordem3eseeuquisernessemesmocodigocalculardeordem2euteireidefazerumelseerepetirissoaqui?det=((mat[0][0]*mat[1][1]*mat[2][2])-(mat[0][2]+mat[1][1]+mat[2][0]));System.out.println("O determinante dessa matriz é: "+det);
só que ao invés de disso diminuiria os calculo pq acima e de ordem 3 ?
Seu cálculo de determinente de matriz de 3º ordem está errado. Esse métodos que você usou é o usado para matriz de ordem 2, porém é dado pela diferença entre produto (multiplicação) dos termos da diagonal primária e produto dos termos da diagonal secundária.
Faça uma revisão ae.
Tem uma fórmula para resolver determinente de órdem arbitrária…
Abraço!
ViniGodoy
O determinante da matriz de ordem 3 é calculado assim:
Vingdel
Ou se achar melhor, assim:
d34d_d3v1l
outra dúvida:
por que você criou dois objetos do tipo Scanner ?
Um só basta!
E porque ta usando while dentro de while?
Não é possível usar “for” não?
logo logo farei um software desses (eu acho)…
aí posto o source para mostrar
(depois que vc ter terminado o seu, claro)
olivercld
obrigado galera… vou analisar melhor a forma de fazer a determinante e ai posto o codigo denovo.
vou passar a maneira de fazer no papel …
conseguindo ou nao posto aqui valeuuu
olivercld
d34d_d3v1l vc me perguntou sobre o while entao la ta querendo dizer que enquanto linha for menor que 3 esta dizendo que e o maximo que posso fazer e uma matriz de 3 ordem certo ? e se o usuario digitar um numero superior exem: uma 4x4 ela nao vai aceitar so que mesmoa ssim ao eu colocar uma 4 la no começo continua pedindo para digitar os valores da matriz .
d34d_d3v1l
Se o Software só funciona com matriz 3x3, então pq vai pedir para o usuario digitar ?
abrazz…
olivercld
deu certo veja o codigo:
importjava.util.Scanner;publicclassDeterminante{staticintdet;staticScannerdigite=newScanner(System.in);publicstaticvoidmain(String[]args){int[][]matriz=newint[3][3];//int[][] mat = new int [2][2];//System.out.println("Qual ordem vc quer 2 ou ordem 3:");//digite.next();//if(digite == 2){System.out.println("\n Digite os valores para MAT..:");for(intlinha=0;linha<=2;linha++){for(intcoluna=0;coluna<=2;coluna++){System.out.println("Mat: ["+(linha+1)+"]["+(coluna+1)+"]");matriz[linha][coluna]=digite.nextInt();}}det=matriz[0][0]*matriz[1][1]*matriz[2][2]+matriz[0][1]*matriz[1][2]*matriz[2][0]+matriz[0][2]*matriz[1][0]*matriz[2][1]-matriz[0][0]*matriz[1][2]*matriz[2][1]-matriz[0][1]*matriz[1][0]*matriz[2][2]-matriz[0][2]*matriz[1][1]*matriz[2][0];System.out.println("O determinante dessa matriz é: "+det);}}
agora eu tentei fazer tipo um menu, pra escolher se o usuario quer uma 2x2 ou a 3x3, tntei fazer mais nao estou sabendo, queria assim se usuario qeur uma 2x2 digite tal se ele quer uma 3x3 digite tal. tem como fazer ? poderiam me dar uma ajuda
ha sim o exercicio funcionou direito em uma 3x3 peguei estes numeros de um exercicio conferi
ta e agora caso eu queira fazer dentro do msmo codigo uma 2x2 , eu nao estou acertando fazer tipo um menu pra o usuario escolher qual ele quer a 2x2 ou a 3x3. ? tentei fazer no codigo so que nao ta saindo
ftorres
Usei o seu codigo e fiz so algumas modificações. Ainda poderia melhorar o codigo mas ficaria mais difícil o entendimento da lógica.
importjava.util.Scanner;publicclassDeterminantes{publicstaticintdet;publicstaticScannerler=newScanner(System.in);publicstaticvoidmain(String[]args){System.out.println("Escolha a ordem da matriz que deseja calcular 2 ou 3 :");intordem=ler.nextInt();int[][]matriz=newint[ordem][ordem];//if(digite == 2){ System.out.println("\n Digite os valores para MAT..:");for(intlinha=0;linha<ordem;linha++){for(intcoluna=0;coluna<ordem;coluna++){System.out.println("Mat: ["+(linha+1)+"]["+(coluna+1)+"]");matriz[linha][coluna]=ler.nextInt();}}if(ordem==3){det=matriz[0][0]*matriz[1][1]*matriz[2][2]+matriz[0][1]*matriz[1][2]*matriz[2][0]+matriz[0][2]*matriz[1][0]*matriz[2][1]-matriz[0][0]*matriz[1][2]*matriz[2][1]-matriz[0][1]*matriz[1][0]*matriz[2][2]-matriz[0][2]*matriz[1][1]*matriz[2][0];System.out.println("O determinante dessa matriz é: "+det);}if(ordem==2){det=matriz[0][0]*matriz[1][1]-matriz[0][1]*matriz[1][0];System.out.println("O determinante dessa matriz é: "+det);}}}
sim desse jeito ta saindo uma embaixo da outra. só que quero a trasposta e nao e isso que acontece oprof falou que era assim so que o que aconteceno esta sendo transposta. veja:
Leituradosvaloresdamatrizmatriz.:[1][1]1matriz.:[1][2]2matriz.:[1][3]3matriz.:[1][4]// fim da linha 14matriz.:[2][1]5matriz.:[2][2]6matriz.:[2][3]7matriz.:[2][4]// fim da linha 28matriz.:[3][1]9matriz.:[3][2]1matriz.:[3][3]2matriz.:[3][4]// fim da linha 33matriz.:[4][1]4matriz.:[4][2]5matriz.:[4][3]6matriz.:[4][4]//7MatrizTransposta|1|2|3|4|// deveria linha se tornar coluna |5|6|7|8||9|1|2|3||4|5|6|7|assim:15263748
é dessa forma e nao esta da maneira de como ele falou para ser transposta
olivercld
nao estou conseguindo criar o metodo há um monte de erros poderia me explicar. alguem ou cleyvison
//if(ordem == 3){publicintTerceiraOrdem(inti){det=matriz[0][0]*matriz[1][1]*matriz[2][2]+matriz[0][1]*matriz[1][2]*matriz[2][0]+matriz[0][2]*matriz[1][0]*matriz[2][1]-matriz[0][0]*matriz[1][2]*matriz[2][1]-matriz[0][1]*matriz[1][0]*matriz[2][2]-matriz[0][2]*matriz[1][1]*matriz[2][0];//System.out.println("O determinante dessa matriz é: " + det);returndet;}//if(ordem == 2)publicSegundaOrdem(int){det=matriz[0][0]*matriz[1][1]-matriz[0][1]*matriz[1][0];//System.out.println("O determinante dessa matriz é: " + det);returndet;}switch(ordem){case2:break;case3:break;}System.out.println("O determinante dessa matriz é: "+det);}
Vingdel
Opa, eu inverti os índices, é que fiz correndo não tive tempo de testar. Testa assim:
sobre a transposta deixa eu ver se entendi… os indics stao primeiro chamando coluna certo … e na hora de imprimir a linha vai chamar o primeiro for que contem a coluna certo ? depois a coluna vai chamar o segunfo for que contem linha correto ?
olivercld
ou eu poderia fazer seguinte tanto faz assim da correto domesmo jeito a transposta.