Foro de elhacker.net

Programación => Java => Mensaje iniciado por: juancaa en 3 Marzo 2012, 15:59 pm



Título: Ayuda! Calcular determinante en Java
Publicado por: juancaa en 3 Marzo 2012, 15:59 pm
Pues veran, mi intencion es lograr un codigo recursivo en java que calcule el determinante de una matriz de orden N, el caso es que ya logre dicho codigo en C y ahora que estoy aprendiendo Java se me ocurrio traducirlo pero a la hora de compilarlo me tira algunos errores que no comprendo dado que todavia no estoy familiarizado con Java, aqui les enseño mi codigo:

Código:
import java.util.Scanner;

public class det_matrix {
    public static void main (String args[]) {
        Scanner in=new Scanner(System.in);
int i, j, dim, det;

         /* Leo matriz */
        System.out.print("Introduzca dimension matriz : ");
        dim=in.nextInt();
        int matrix[][]=new int[dim][dim];
        for (i=0; i<dim; i++) {
            System.out.print("Elementos fila "+i+" : ");
            for (j=0; j<dim; j++) {
                matrix[i][j]=in.nextInt();                                             
            }                       
        }
        System.out.println();

         /* Intento calcular determinante */
        System.out.print("Determinante = ");
        if (dim==1)
            System.out.print(matrix[0][0]);
        else
            System.out.print(det_matrix_N(matrix)); /* ERROR */
        System.out.println();
    }
   
    private static int sgn (int x) {
        if (x%2==0) return(1);
        else return(-1);           
    }
    private static int matrix_adj (int matrix[][], int matrix_aux[][], int dim, int m, int n) {
        int i, j, p, q;
        for (j=0, q=0; j<dim; j++)
            if (j!=n) {
                for (i=0, p=0; i<dim; i++)
                    if (i!=m) {
                        matrix_aux[p][q]=matrix[i][j];
                        p++;
                    }
                q++;               
            }
        return(dim-1);
    }
    private static int det_matrix_N (int matrix[][], int dim) {
        int i, j, dim_aux, det;
        for (i=0, j=0, det=0, dim_aux=dim; i<dim; i++) {
            det+=sgn(i+j)*matrix[i][j]*det_matrix_adj(matrix,dim_aux,i,j);
        }       
        return(det);
    }
    private static int det_matrix_adj (int matrix[][], int dim, int m, int n) {
        int matrix_aux[][]=new int[dim][dim];
        if ( (matrix_adj(matrix,matrix_aux,dim,m,n))==1 )
            return(matrix_aux[0][0]);
        return(det_matrix_N(matrix_aux,dim-1));
    }       
}

Segun el compilador de NetBeans, el error se encuentra al llamar a la funcion det_matrix_N(matrix) y no entiendo que hago mal ni tampoco como arreglarlo, este es el mensaje de error :

Codigo de error:
Citar
method det_matrix_N in class det_matrix.det_matrix cannot be applied to given tipes;
required: int[][], int
found: int[][]
reason: actual and formal argument lists differ in length

Cualquier idea o suggerencia es bien recibida.
Gracias de antemano!


Título: Re: Ayuda! Calcular determinante en Java
Publicado por: camaleonh en 3 Marzo 2012, 17:42 pm
System.out.print(det_matrix_N(matrix)); /* ERROR */

Estás pasando solo 1 argumento a la función, ahí lo dicen claramente en los errores, , deberias pasarle tambien dim, puesto que es el otro argumento faltante.

det_matrix_N(matrix, dim)


Título: Re: Ayuda! Calcular determinante en Java
Publicado por: juancaa en 3 Marzo 2012, 23:01 pm
Muchisimas gracias camaleonh, tienes toda la razon del mundo!!

Que fallo tan estupido OMG!!

Problema solucionado!


Título: Re: Ayuda! Calcular determinante en Java
Publicado por: allop en 14 Agosto 2012, 08:09 am
disculpa! y esto se puede aplicar para Java applet? esque soy nuevo en esto... Jeje :)


Título: Re: Ayuda! Calcular determinante en Java
Publicado por: adwind en 14 Agosto 2012, 18:41 pm
disculpa! y esto se puede aplicar para Java applet? esque soy nuevo en esto... Jeje :)

Claro que si comapañero.