Masato Posted October 14, 2012 at 06:15 PM Report #479129 Posted October 14, 2012 at 06:15 PM (edited) Tenho aqui um programa cuja função é identificar se uma matriz é identidade. o código é este a baixo . eu basicamente estou a invocar uma função que cria matrizes identidade, mas a minha questão é como iniciar a variável n que é a que vai ser invocada na função a ser invocada. o código da criação da matriz identidade é: static int[][] createIdentity(int n) { int [][]m= new int [n][n]; m[0][0]=1; for(int i=0; i<m.length-1;i++) { for (int j=0; j<m[i].length-1;j++) { m[i+1][j+1]=m[i][j]; } } return m; o código da função principal é: static boolean isIdentity (int [][]v) { int[][] p=createIdentity(n); if (v==p) { return true; } return false; } isto é uma matriz identidade:http://pt.wikipedia.org/wiki/Matriz_identidade Edited October 14, 2012 at 09:30 PM by Baderous geshi
HappyHippyHippo Posted October 14, 2012 at 09:19 PM Report #479158 Posted October 14, 2012 at 09:19 PM (edited) o código está errado, basta ver que nunca atribuis nada a m[0][N] ou m[N][0] para N [1 .. n] o que pretendes será : static int[][] createIdentity(int n) { int [][]m= new int [n][n]; for(int i = 0; i < m.length; i++) { for (int j = 0; j < m[i].length; j++) { if (i == j) m[i][j] = 1; // na diagonal princial else m[i][j] = 0; } } return m; } para verificar basta fazer copy-paste desta função e fazer as alterações necessárias: static bool isIdentity(int[][] m) { for(int i = 0; i < m.length; i++) { for (int j = 0; j < m[i].length; j++) { if ((i == j && m[i][j] != 1) || // se for na diagonal principal e não for 1 (i != j && m[i][j] != 0)) // ou se não for na diagonal principal e não for 0 return false; } } return true; } Edited October 15, 2012 at 02:10 PM by HappyHippyHippo IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
Masato Posted October 15, 2012 at 02:02 PM Author Report #479222 Posted October 15, 2012 at 02:02 PM O código que escrevi para criar uma matriz identidade está correcto pois funciona. Em relação ao que escreveste, não vi pk tem já a solução, queria era dicas, pistas 😉
HappyHippyHippo Posted October 15, 2012 at 02:05 PM Report #479223 Posted October 15, 2012 at 02:05 PM (edited) O código que escrevi para criar uma matriz identidade está correcto pois funciona. estás a negar esta afirmação : o código está errado, basta ver que nunca atribuis nada a m[0][N] ou m[N][0] para N [1 .. n] tens é sorte que o java deverá atribuir 0 a todos os bytes alocados ... ps : que na realidade, se assim for, o código ficaria muito mais simples : static int[][] createIdentity(int n) { int [][]m= new int [n][n]; for(int i = 0; i < m.length; i++) { m[i][i] = 1; } return m; } Edited October 15, 2012 at 02:10 PM by HappyHippyHippo IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
Masato Posted October 15, 2012 at 02:08 PM Author Report #479225 Posted October 15, 2012 at 02:08 PM Mas obrigado
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now