money000
Home ] Up ]

 

//money000.cpp
// modified 07/13/2000 3:10 PM
#include <iostream.h>
#include <stdlib.h>
#include <time.h>
int const MAX_VALUE  = 10;
int const TEST_COUNT = 20;
class CMoney
  {
  private:
    int dollars;
    int cents;
  public:
    CMoney(int dollars=0, int cents=0);
    CMoney(char ch);
    ~CMoney(void);
    void display(void) const;
    CMoney operator + (CMoney amount) const; //20% of a project
    CMoney add        (CMoney amount) const;
    friend CMoney operator * (CMoney amount1, CMoney amount2);
    friend CMoney multiply   (CMoney amount1, CMoney amount2);
  };
CMoney operator * (CMoney amount1, CMoney amount2)
  {
  CMoney tempAmount;
  tempAmount.dollars = 999; //dummy
  tempAmount.cents = 99;    //dummy
  return tempAmount;
  }
void testOperatorMultiply(void)
  {
  for (int i=0; i<TEST_COUNT; i++)
    {
    cout << "Test #" << i << endl;
    CMoney m1('r'), m2('r'), m3('r');
    cout << "m1 = "; m1.display();
    cout << "m2 = "; m2.display();
    cout << "m3 = "; m3.display();
    m1 = m2 * m3;
    cout << "After m1 = m2 * m3;\n";
    cout << "m1 = "; m1.display();
    cout << "m2 = "; m2.display();
    cout << "m3 = "; m3.display();
    }
  }
CMoney CMoney:: operator + (CMoney amount) const
  {
  CMoney tempAmount;
  tempAmount.dollars = 99;  //dummy
  tempAmount.cents = 99;    //dummy
  return tempAmount;
  }
void testOperatorAdd(void)
  {
  for (int i=0; i<TEST_COUNT; i++)
    {
    cout << "Test #" << i << endl;
    CMoney m1('r'), m2('r'), m3('r');
    cout << "m1 = "; m1.display();
    cout << "m2 = "; m2.display();
    cout << "m3 = "; m3.display();
    m1 = m2 + m3;
    cout << "After m1 = m2 + m3;\n";
    cout << "m1 = "; m1.display();
    cout << "m2 = "; m2.display();
    cout << "m3 = "; m3.display();
    }
  }
CMoney::CMoney(int dollars, int cents)
  {
  this->dollars = dollars;
  this->cents  = cents;
  }
void testConstructor(void)
  {
  for (int i=0; i<TEST_COUNT; i++)
    {
    int dollars = rand()%MAX_VALUE + 1;
    int cents   = rand()%100;
    if (rand()%2 == 1)
        {
        dollars = -dollars;
        cents = -cents;
        }
    CMoney amount(dollars, cents);
    amount.display();
    }
  }
CMoney::CMoney(char ch)
  {
  if (('r' == ch) || ('R' == ch))
      {
      dollars = rand()%MAX_VALUE + 1;
      cents   = rand()%100;
      if (rand()%2 == 1)
          {
          dollars = -dollars;
          cents = -cents;
          }
      }
    else if (('u' == ch) || ('U' == ch))
      {
      dollars = 1;
      cents = 0;
      if (rand()%2 == 1)
          {
          dollars = -dollars;
          cents = -cents;
          }
      }
    else if (('p' == ch) || ('P' == ch))
      {
      dollars = 0;
      cents = 1;
      if (rand()%2 == 1)
          {
          dollars = -dollars;
          cents = -cents;
          }
      }
    else if (('i' == ch) || ('I' == ch))
      {
      cout << "Enter dollars ";
      cin >> dollars;
      cout << "Enter cents   ";
      cin >> cents;
      }
    else
      {
      dollars = 0;
      cents = 0;
      }
  }
void testConstructorRand(void)
  {
  for (int i=0; i<TEST_COUNT; i++)
    {
    char ch;
    switch (rand()%6)
      {
      case 0: ch = 'r'; break;
      case 1: ch = 'R'; break;
      case 2: ch = 'u'; break;
      case 3: ch = 'U'; break;
      case 4: ch = 'p'; break;
      case 5: ch = 'P'; break;
      case 6: ch = 'i'; break;
      case 7: ch = 'I'; break;
      default:
        ch = 'k';
      }
    CMoney amount(ch);
    cout << ch << "    ";
    amount.display();
    }
  }
void testAssign(void)
  {
  for (int i=0; i<TEST_COUNT; i++)
    {
    CMoney m1('r'), m2('r'), m3('r');
    cout << "m1 = "; m1.display();
    cout << "m2 = "; m2.display();
    cout << "m3 = "; m3.display();
    m1 = m2 = m3;
    cout << "After m1 = m2 = m3;\n";
    cout << "m1 = "; m1.display();
    cout << "m2 = "; m2.display();
    cout << "m3 = "; m3.display();
    }
  }
CMoney::~CMoney(void)
  {
  }
void CMoney::display(void) const
  {
  int tCents = cents;
  if (tCents < 0)
      tCents = -tCents;
  if ((0 == dollars) && (cents < 0))
      cout << '-';
  cout << dollars << '.';
  if (0==tCents)
      cout << "00" << endl;
    else if (tCents < 10)
      cout << '0' << tCents << endl;
    else
      cout << tCents << endl;
  }
void main(void)
  {
  srand(time(NULL));
  //testConstructor();
  testConstructorRand();
  //testAssign();
  //testOperatorAdd();
  //testOperatorMultiply();
  }