import eprog.*;
public class Gauss_DreieckOben extends EprogIO
{
public static int[][][] berechnenVonGaussDreieckOben (int[][][] a,int matrixD,int sp,int zl,int k,int diag,int[] faktor)
throws EprogException
{
//Selbe verfahren wie bei Gauss_DreieckUnten
diag = matrixD;
for (sp = matrixD-1; sp > 0; sp--) //Eleminationsschritte
{
diag--; //Diagonale
for (zl=sp-1; zl >= 0; zl--) //Jeweils alle folgenden Zeilen bearbeiten
{
//if(a[diag][diag][0] == 0){print ("Falsche Eingabe"); System.exit(0);
//Abfangen des Fehlers: wenn a11=0 werden zwei Zeilen vertauscht
//}
//Berechnung des Faktors mit dem die Zeile Multipliziert wird
faktor[1] = a[zl][sp][1] * a[diag][diag][0];
faktor[0] = a[zl][sp][0] * a[diag][diag][1];
//// Beachtung der 4 Vorzeichen Regeln
boolean kontroll = false;
if(kontroll == false && (faktor[1] > 0 && faktor[0] > 0))
{
faktor[1]*=(-1);
kontroll = true;
}
if(kontroll == false && (faktor[1] > 0 && faktor[0] < 0))
{
faktor[0]*=(-1);
kontroll = true;
}
if(kontroll == false && (faktor[1] < 0 && faktor[0] > 0))
{
faktor[1]*=(-1);
kontroll = true;
}
if(kontroll == false && (faktor[1] < 0 && faktor[0] < 0))
{
faktor[0]*=(-1);
kontroll = true;
}
//println("spa="+sp+"\nfaktor[1]="+faktor[1]+"\nfaktor[0]="+faktor[0]+"\na["+zl+"]["+sp+"]/a["+diag+"]["+diag+"]"); //Faktor bestimmen
for(k=0; k < a[0].length; k++)
{
//Berechnung der Zeilen und Spalten
a[zl][k][1] = (a[zl][k][1] * faktor[0] *a[sp][k][0]) + (faktor[1] *a[sp][k][1]) * a[zl][k][0];
a[zl][k][0] = a[zl][k][0] * (faktor[0] *a[sp][k][0]);
}
}
}
return a;
}
}
Das habe ich geschrieben um die uneter ecke auf Null zu setzen.
Jetzt müsste ich das ganze nocheinmal kopieren und nur oben bei den for schleifen was ändern - geht das auch ohne das ich den ganzen code verwende ?