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));
}
}
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
required: int[][], int
found: int[][]
reason: actual and formal argument lists differ in length
Cualquier idea o suggerencia es bien recibida.
Gracias de antemano!