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