010
25.09.2002, 10:57 Uhr
~0xdeadbeef
Gast
|
*SEUFZ* OK, ich hab in der CLangzahl.java alle int i's in int j's üebrsetzt, damit das Forum mit der Darstellung klarkommt:
C++: |
//CLangzahl.java class CLangzahl { private int iStellen; // Anzahl der Stellen der Zahl private int iBasis; // Basis des verwendeten Zahlsystems private int[] aiZiffern; // Die Zahl im Speicher
private static String sZeichen = "0123456789ABCDEF";
public CLangzahl(int Basis, int Stellen) throws Exception { if(Basis<2 || Basis > 16) throw new Exception("CLangzahl.CLangzahl: Basis < 2 || Basis > 16");
iStellen = Stellen; iBasis = Basis; aiZiffern = new int[Stellen]; SetNull(); }
public void SetNull() { for(int j=0; j<iStellen; j++) aiZiffern[j] = 0; }
public void SetStelle(int Stelle, int Value) throws Exception { if(Stelle>=iStellen) throw new Exception("CLangzahl.SetStelle: Indexfehler"); if(Value>=iBasis) throw new Exception("CLangzahl.SetStelle: Basisfehler");
aiZiffern[iStellen-1-Stelle] = Value; }
private void ArrayAdd(int[] aiZiel, int[] aiS1, int[] aiS2, int iS2Start) {
int iTeilsumme, iUebertrag=0; int iAnzahlZiffern = Math.min(aiS1.length, Math.min(aiS2.length, aiZiel.length));
for(int j=0; j<iS2Start; j++) aiZiel[aiZiel.length-1-j] = aiS1[aiS1.length-1-j];
for(int j=iS2Start; j<iAnzahlZiffern; j++) { iTeilsumme = aiS1[aiS1.length-1-j] + iUebertrag + aiS2[aiS2.length-1-j+iS2Start]; iUebertrag = (iTeilsumme >= iBasis) ? 1 : 0; aiZiel[aiZiel.length-1-j] = (iUebertrag == 0) ? iTeilsumme : (iTeilsumme - iBasis); } }
public void Mult(CLangzahl aZahl) throws Exception { if(aZahl.iBasis != iBasis) throw new Exception("CLangzahl.Mult: Unterschiedliche Zahlsysteme"); if(aZahl.iStellen != iStellen) throw new Exception("CLangzahl.Mult: Unterschiedliche Stellenzahl");
int[][] aiMultiplikation = new int[iBasis][];
aiMultiplikation[0] = new int[iStellen+1]; for(int j=1; j<iBasis; j++) { aiMultiplikation[j] = new int[iStellen+1]; ArrayAdd(aiMultiplikation[j], aiMultiplikation[j-1], aiZiffern, 0); }
SetNull(); for(int j=0; j<iStellen; j++) if(aZahl.aiZiffern[j] != 0) ArrayAdd(aiZiffern, aiZiffern, aiMultiplikation[aZahl.aiZiffern[j]], class CLangzahl { private int iStellen; // Anzahl der Stellen der Zahl private int iBasis; // Basis des verwendeten Zahlsystems private int[] aiZiffern; // Die Zahl im Speicher
private static String sZeichen = "0123456789ABCDEF";
public CLangzahl(int Basis, int Stellen) throws Exception { if(Basis<2 || Basis > 16) throw new Exception("CLangzahl.CLangzahl: Basis < 2 || Basis > 16");
iStellen = Stellen; iBasis = Basis; aiZiffern = new int[Stellen]; SetNull(); }
public void SetNull() { for(int j=0; j<iStellen; j++) aiZiffern[j] = 0; }
public void SetStelle(int Stelle, int Value) throws Exception { if(Stelle>=iStellen) throw new Exception("CLangzahl.SetStelle: Indexfehler"); if(Value>=iBasis) throw new Exception("CLangzahl.SetStelle: Basisfehler");
aiZiffern[iStellen-1-Stelle] = Value; }
private void ArrayAdd(int[] aiZiel, int[] aiS1, int[] aiS2, int iS2Start) {
int iTeilsumme, iUebertrag=0; int iAnzahlZiffern = Math.min(aiS1.length, Math.min(aiS2.length, aiZiel.length));
for(int j=0; j<iS2Start; j++) aiZiel[aiZiel.length-1-j] = aiS1[aiS1.length-1-j];
for(int j=iS2Start; j<iAnzahlZiffern; j++) { iTeilsumme = aiS1[aiS1.length-1-j] + iUebertrag + aiS2[aiS2.length-1-j+iS2Start]; iUebertrag = (iTeilsumme >= iBasis) ? 1 : 0; aiZiel[aiZiel.length-1-j] = (iUebertrag == 0) ? iTeilsumme : (iTeilsumme - iBasis); } }
public void Mult(CLangzahl aZahl) throws Exception { if(aZahl.iBasis != iBasis) throw new Exception("CLangzahl.Mult: Unterschiedliche Zahlsysteme"); if(aZahl.iStellen != iStellen) throw new Exception("CLangzahl.Mult: Unterschiedliche Stellenzahl");
int[][] aiMultiplikation = new int[iBasis][];
aiMultiplikation[0] = new int[iStellen+1]; for(int j=1; j<iBasis; j++) { aiMultiplikation[j] = new int[iStellen+1]; ArrayAdd(aiMultiplikation[j], aiMultiplikation[j-1], aiZiffern, 0); }
SetNull(); for(int j=0; j<iStellen; j++) if(aZahl.aiZiffern[j] != 0) ArrayAdd(aiZiffern, aiZiffern, aiMultiplikation[aZahl.aiZiffern[j]], iStellen-j-1); } }
|
Grüße,
0xdeadbeef |