|
//Date: 2003.11.07 //File: bigInt02.cpp //Author: AOU /////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////// #include <iostream.h> #include <stdlib.h> #include <time.h> /*********************************************************/ /* BEGIN WHAT IS NEW */ /*********************************************************/ /* CDigit(void); void display(void) const; void displayAll(void) const; */ /*********************************************************/ /* END WHAT IS NEW */ /*********************************************************/ /////////////////////////////////////////////////////////// //constants /////////////////////////////////////////////////////////// const unsigned int MIN_VALUE = 0; const unsigned int MAX_VALUE = 9; const unsigned int UNDEFINED = 911; const int MAX_SIZE = 10; const int TEST_COUNT = 25; /////////////////////////////////////////////////////////// //prototypes /////////////////////////////////////////////////////////// void driverConstructorDefault_CDigit(void); /////////////////////////////////////////////////////////// //class CDigit /////////////////////////////////////////////////////////// class CDigit { private: CDigit *_prev; unsigned int _coef; unsigned int _expo; CDigit *_next; public: CDigit(void); // CDigit(char ch); CDigit(const CDigit &d2); void display(void) const; // void displayAll(void) const; // void init(void); bool operator == (const CDigit &d2) const; bool operator != (const CDigit &d2) const; bool operator < (const CDigit &d2) const; bool operator > (const CDigit &d2) const; bool operator >= (const CDigit &d2) const; bool operator <= (const CDigit &d2) const; CDigit operator + (const CDigit &d2) const; CDigit operator * (const CDigit &d2) const; CDigit operator - (const CDigit &d2) const; CDigit operator / (const CDigit &d2) const; CDigit & operator = (const CDigit &d2); friend ostream & operator << (ostream &bob, const CDigit &d2); }; /////////////////////////////////////////////////////////// //class CBigInt /////////////////////////////////////////////////////////// class CBigInt { private: CDigit *_first; CDigit *_last; int _count; public: CBigInt(void); CBigInt(char ch); CBigInt(int n); CBigInt(const CBigInt &i2); void display(void) const; void init(void); bool insert(CDigit x); bool isSorted(void) const; void shuffle(void); void sortBubble(void); void populate(int n); CBigInt & operator = (const CBigInt &i2); bool operator == (const CBigInt &i2) const; bool operator != (const CBigInt &i2) const; bool operator < (const CBigInt &i2) const; bool operator <= (const CBigInt &i2) const; bool operator > (const CBigInt &i2) const; bool operator >= (const CBigInt &i2) const; CBigInt operator + (const CBigInt &i2) const; CBigInt operator * (const CBigInt &i2) const; CBigInt operator - (const CBigInt &i2) const; CBigInt operator / (const CBigInt &i2) const; friend ostream & operator << (ostream &bob, const CBigInt &bi); bool hasDistinct(void) const; bool deleteAtPos(int p); }; /////////////////////////////////////////////////////////// //main /////////////////////////////////////////////////////////// void main(void) { srand(time(NULL)); driverConstructorDefault_CDigit(); } /////////////////////////////////////////////////////////// // void driverConstructorDefault_CDigit(void) /////////////////////////////////////////////////////////// void driverConstructorDefault_CDigit(void) { cout << "-------------------------------\n"; cout << "driverConstructorDefault_CDigit\n"; cout << "-------------------------------\n"; for (int i=1; i<=TEST_COUNT; i++) { CDigit d1, d2; cout << "d1="; d1.display(); cout << endl; cout << "d1="; d1.displayAll(); cout << endl; cout << "d2="; d2.display(); cout << endl; cout << "d2="; d2.displayAll(); cout << endl; cout << "...................\n"; } } /////////////////////////////////////////////////////////// // void CDigit::displayAll(void) const /////////////////////////////////////////////////////////// void CDigit::displayAll(void) const { cout << '@' << this << "="; cout << '[' << this->_prev << ' '; cout << this->_coef << ' '; cout << this->_expo << ' '; cout << this->_next << ']'; } /////////////////////////////////////////////////////////// // void CDigit::display(void) const /////////////////////////////////////////////////////////// void CDigit::display(void) const { cout << this->_coef; } /////////////////////////////////////////////////////////// // CDigit::CDigit(void) /////////////////////////////////////////////////////////// CDigit::CDigit(void) { this->_coef = UNDEFINED; this->_expo = UNDEFINED; this->_prev = NULL; this->_next = NULL; } |