//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;
}
|