000
13.11.2005, 11:04 Uhr
~Suderwurzen
Gast
|
ich hab ein programm erstellt, das mittels feldern 2 achtstellige zahlen zu einer beliebigen basis addiert. allerdings darf bei der ausgabe die führende null nicht angezeigt werden. hab schon ewig lang herumprobiert, bin aber auf keinen grünen zweig gekommen.
bitte um hilfe!
es handel sich um die funktion PrintBase, bin mir aber auch nicht sicher.
C++: |
#include <iostream> using namespace std;
bool AddBase (int a [8], int b [8], int c [8], int base); bool AddBin (int a [8], int b [8], int c [8]); bool AddHex (int a [8], int b [8], int c [8]); void PrintBase (int a [8], char suffix); void PrintDigit (int digit); void PrintHex (int a [8]); void PrintBin (int a [8]);
int main() { int a [8] = {0, 1, 1, 1, 1, 1, 1, 1}; int b [8] = {0, 1, 1, 1, 1, 1, 1, 1}; int c [8]; int base = 2;
if (base == 2) { PrintBin (a); PrintBin (b); AddBin (a, b, c); PrintBin (c); } else if (base == 16) { PrintHex (a); PrintHex (b); AddHex (a, b, c); PrintHex(c); } else { PrintBase (a, 'x'); PrintBase (b, 'x'); AddBase (a, b, c, base); PrintBase (c, 'x');
} }
bool AddBase (int a [8], int b [8], int c [8], int base) {
for (int i = 7; i >= 0; i--) { if (a[i] + b[i] >= base) { a[i - 1] = a[i - 1] + 1; //nächstes element "1 weiter" } c[i]= (a[i] + b[i]) % base; } return c; } bool AddBin (int a [8], int b [8], int c [8]) { AddBase (a, b, c, 2); return c; }
bool AddHex (int a [8], int b [8], int c [8]) { AddBase (a, b, c, 16); return c;
} void PrintBase (int a [8], char suffix) { for (int i = 0; i <= 7; i++) { PrintDigit (a[i]); } cout << suffix << endl; }
void PrintDigit (int digit) { if (digit < 10) { cout << digit; } else { char c = 'A' + digit - 10; cout << c; } }
void PrintHex (int a [8]) { PrintBase (a, 'h'); }
void PrintBin (int a [8]) { PrintBase (a, 'b'); }
|
|