Ayudita con analisis de codigo :)

nadiazc
18 de Abril del 2005
Hola!
Estoy empezando con esto del Java y bueno, el profe se ha embalado mucho o yo es que voy muy perdida, pero es que nos a mandado a analizar el codigo de un programa que calcula el determinante de matrices cuadradas y la verdad no me veo capaz de analizarlo todo yo sola, aqui es donde entrais vosotros :) queria que me hechaseis un cable con esto, que hay bucles y arrays que no tengo ni la más remota idea de lo que hacen..:S

Bueno, espero que me podais hechar un cable almenos en una o dos sentencias que con eso ya tengo suficiente :D
muchas gracias!!!! saludos!

Aqui os dejo el codigo:



import java.io.*;

class Matriu {



private int nombreDeFiles;
private int nombreDeColumnes;
private int Matriu[][];




public void inputArray() throws IOException {
InputStreamReader input = new InputStreamReader(System.in);
BufferedReader keyboardInput = new BufferedReader(input);



System.out.print(\"Introdueix el nombre de files \");
nombreDeFiles = new Integer(keyboardInput.readLine()).intValue();
System.out.print(\"Introdueix el nombre de columnes \");
nombreDeColumnes = new Integer(keyboardInput.readLine()).intValue();



Matriu = new int[nombreDeFiles][nombreDeColumnes];



for(int index2 = 0; index2 < nombreDeColumnes;index2++) {
for(int index1 = 0; index1 < nombreDeFiles;index1++) {
System.out.print(\"Introdueix l\\'element [\" + index1 + \"][\" +
index2 + \"] \");
Matriu[index1][index2] = new Integer(keyboardInput.readLine()).intValue();
}
}
System.out.println();
}



private void inputColumn(int[][] newMatriu, int[][] oldMatriu, int newColIndex, int oldColIndex) {
int rowIndex;

for(rowIndex=1;rowIndex < oldMatriu[0].length;rowIndex++) {
newMatriu[newColIndex][rowIndex-1] = oldMatriu[oldColIndex][rowIndex];
}
}


public void outputArray() {

for(int index2 = 0; index2 < nombreDeColumnes;index2++) {
System.out.print(\"(\");
for(int index1 = 0; index1 < nombreDeFiles;index1++) {
System.out.print(\" \" + Matriu[index1][index2]);
}
System.out.println(\" )\");
}
System.out.println();
}



public int determinant() {
if (nombreDeColumnes != nombreDeFiles) {
System.out.println(\"ERROR: nomes es pot trobar el determiant d\\'una matriu quadrada\");
return(0);
}
else {
if (nombreDeColumnes != 1) return(determinant(Matriu));
else {
System.out.println(\"ERROR: no es pot trobar el determinant d\\'un sol element\");
return(0);
}
}
}

private int determinant(int[][] oldMatriu) {
int length = oldMatriu.length;
int colIndex;


if (length == 2) return(oldMatriu[0][0]*oldMatriu[1][1] -
oldMatriu[0][1]*oldMatriu[1][0]);
else {
int determinant=0;
for (int index=0;index < oldMatriu.length;index++) {
int[][] newMatriu = new int[length-1][length-1];
for(colIndex=0;colIndex < index;colIndex++) {
this.inputColumn(newMatriu,oldMatriu,colIndex,colIndex);
}
for(colIndex=index+1;colIndex < oldMatriu.length;colIndex++) {
this.inputColumn(newMatriu,oldMatriu,colIndex-1,colIndex);
}
if (index%2 == 0) determinant = determinant + determinant(newMatriu);
else determinant = determinant - determinant(newMatriu);
}
return(determinant);
}
}
}