#include "salib.h" using namespace std; const bool debug_print = true; class bignum { protected: SA digits; int num_digs; bool isnegative; int getdigit(int pos) { if (pos >= num_digs || pos < 0) return 0; else return digits.get(pos); } void setdigit(int pos, int val) { if (val == 0 && pos >= num_digs) return; if (pos > num_digs) { for (int i = num_digs; i < pos; i += 1) digits.set(i, 0); } if (pos >= num_digs) num_digs = pos + 1; digits.set(pos, val); } public: bignum() { num_digs = 0; isnegative = false; } bignum(int N) { num_digs = 0; isnegative = false; if (N < 0) { isnegative = true; N = - N; } for (int i = 0; N != 0; i += 1) { setdigit(i, N % 10); N /= 10; } } void print() { if (debug_print) cout << "("; if (isnegative) cout << "-"; cout << getdigit(num_digs - 1); for (int i = num_digs - 2; i >= 0; i -= 1) { if (debug_print) cout << ","; cout << getdigit(i); } if (debug_print) cout << ")"; } }; int main() { bignum a, b(987654321), c(-2468), d(5); a.print(); cout << "\n"; b.print(); cout << "\n"; c.print(); cout << "\n"; d.print(); cout << "\n"; }