Hey looking to do the following with this programFill in the

Hey, looking to do the following with this programFill in the multiplication, and division , modulus, <=, >=, -, *  With division being a friend function

1.) Have Division be a friend function

2.) Have multiplication, divison, and modulus <=, >=, -, * with the program filling them.

I tried doing something along the lines of this....
friend money operator <<(const money& lhs);
friend money operator >>( const money& rhs);
but I\'m note quite sure if this is correct. Any help will be helpful. I don\'t want just answers, I want good explanations so I can understand this material.

Whole code posted below.

#include <iostream>

using namespace std;


class money
{
private:
int dollars;
int cents;


public:
money():dollars(0), cents(0){}
money(int dollars_in):dollars(dollars_in), cents(0){}
money(int dollars_in, int cents_in):dollars(dollars_in), cents(cents_in){}


int get_dollars() const;
int get_cents() const;
void set_dollars(int d_in);
void set_cents(int c_in);

money operator ++();
money operator ++(int x);

money operator +(const money& rhs);

money operator -();

friend const money& operator +(const money& lhs, const money& rhs);


money operator --();
money operator --(int x);

bool operator <=();
bool operator >=();
};

// do this as a general function
money operator *(const money& lhs, const money& rhs)
{

return money(0, 0);
}

// do this as a friend function
money operator -(const money& lhs, const money& rhs)
{

return money(0, 0);
}


money money::operator -()
{
return money(get_dollars(), get_cents());
}

money money::operator ++(int blah)
{
int tmp_d = dollars;
int tmp_c = cents;

dollars++;

return money(tmp_d, tmp_c);
}

money money::operator ++()
{
int tmp_d = dollars;
tmp_d += 1;

return money(dollars, cents);
}

int money::get_dollars() const
{
return dollars;
}

int money::get_cents() const
{
return cents;
}

void money::set_dollars(int d_in)
{
dollars = d_in;
}


void money::set_cents(int c_in)
{
cents = c_in;
}

ostream& operator <<(ostream& os, const money& rhs)
{
os << \"$\" << rhs.get_dollars() << \".\";

if(rhs.get_cents() < 10)
{
os << \"0\";
}

os << rhs.get_cents();

return os;
}

money money::operator +(const money& rhs)
{
int tmp_d = 0;
int tmp_c = 0;
int hold_c = 0;
int hold_d = 0;

tmp_d = get_dollars() + rhs.get_dollars();
tmp_c = get_cents() + rhs.get_cents();

if(tmp_c > 99)
{
hold_c = tmp_c % 100;
cout << \"hold_c = \" << hold_c << endl;

hold_d = tmp_c / 100;
cout << \"hold_d = \" << hold_d << endl;

for(int i = 0; i < hold_d; i++)
{
tmp_d++;
}

tmp_c = hold_c;
}


return money(tmp_d, tmp_c);
}


const money& operator +(const money& lhs, const money& rhs)
{
int tmp_d = 0;
int tmp_c = 0;
int hold_c = 0;
int hold_d = 0;


tmp_d = lhs.dollars + rhs.dollars;
tmp_c = lhs.cents + rhs.cents;

if(tmp_c > 99)
{
hold_c = tmp_c % 100;
cout << \"hold_c = \" << hold_c << endl;

hold_d = tmp_c / 100;
cout << \"hold_d = \" << hold_d << endl;

for(int i = 0; i < hold_d; i++)
{
tmp_d++;
}

tmp_c = hold_c;
}

return money(tmp_d, tmp_c);
}

bool operator ==(const money& lhs, const money& rhs)
{
return ((lhs.get_dollars() == rhs.get_dollars()) && (lhs.get_cents() == rhs.get_cents()));
}


int main()
{
money m1;
money m2(100, 99);
money m3(250, 5);

cout << \"m1 = \" << m1 << endl;
cout << \"m2 = \" << m2 << endl;
cout << \"m3 = \" << m3 << endl;

m1 = m2 + m3;

cout << \"m1 = \" << m1 << endl;
m1 = m1 + 200;
cout << \"m1 + 200 \" << endl;
cout << \"m1 = \" << m1 << endl;

cout << \"m2 + m3\" << endl;

cout << \"m1 = \" << m1 << endl;

cout << \"m2 == m1 \" << endl;

cout << \"m1 = \" << m1 << endl;
cout << \"m2 = \" << m2 << endl;
cout << (m2 == m1) << endl;

m1 = money();
m2 = money();

cout << \"m1 = \" << m1 << endl;
cout << \"m2 = \" << m2 << endl;
cout << (m2 == m1) << endl;

cout << \"++m1 \" << endl;
++m1;
cout << \"m1 = \" << m1 << endl;

cout << \"m1++\" << endl;
cout << m1++ << endl;
cout << \"m1 = \" << m1 << endl;

cout << \"-m1 = \" << -m1 << endl;

m2 = money(1, 0);
m3 = money(2, 0);

money tm;
tm = (m3 + -m2);

cout << \"m3 = \" << m3 << endl;
cout << \"m2 = \" << m2 << endl;
cout << \"(m3 + -m2) = \" << tm << endl;


m1 = money;
m2 = money(101, 78);
m3 = money(202, 10);


m2 <= m3?cout << \"m2 <= m3\" << endl; : cout << \"m2 is not <= m3\" << endl;

m2 >= m3?cout << \"m2 >= m3\" << endl; : cout << \"m2 is not >= m3\" << endl;

m1 = m3 * m2;
cout << \"m3 * m2 = \" << m1 << endl;

m1 = m3 - m2;
cout << \"m3 - m2 = \" << m1 << endl;


return 0;
}

Solution

#include <iostream>

using namespace std;


class money
{
private:
    int dollars;
    int cents;


public:
    money():dollars(0), cents(0){}
    money(int dollars_in):dollars(dollars_in), cents(0){}
    money(int dollars_in, int cents_in):dollars(dollars_in), cents(cents_in){}


    int get_dollars() const;
    int get_cents() const;
    void set_dollars(int d_in);
    void set_cents(int c_in);

    money operator ++();
    money operator ++(int x);

    money operator +(const money& rhs);
    money operator *(const money& rhs);
    friend money operator -(const money& lhs, const money& rhs);
    friend money operator /(const money& lhs,const money& rhs);

    money operator -();

    friend const money& operator +(const money& lhs, const money& rhs);


    money operator --();
    money operator --(int x);

   bool operator ==(const money& n);
    bool operator <=(money n);
    bool operator >=(money m);
};

// do this as a general function
money money::operator *(const money& rhs)
{
   int d= dollars*rhs.get_dollars();
  
   int c= cents*rhs.get_cents();
   int c1 = c/100;
   d=d+c1;
   int c2=c%100;
    return money(d, c2);
}

// friend function
money operator -(const money& lhs, const money& rhs)
{
   int n = lhs.get_dollars()-rhs.get_dollars();
   int c= lhs.get_cents()-rhs.get_cents();
   if(c<0)
    {
       n--;
       c=c*-1;
    }
   return money(n,c);
}

// friend function division
money operator /(const money& lhs, const money& rhs)
{
   int n = lhs.get_dollars()/rhs.get_dollars();
   int d= lhs.get_dollars()% rhs.get_dollars();
  
   int c= lhs.get_cents()/rhs.get_cents();
   c=c+d;
  
   return money(n,c);
}


money money::operator -()
{
    return money(-get_dollars(), -get_cents());
}

money money::operator ++(int blah)
{
    this->dollars=this->dollars+blah;
    return money(dollars,cents);  
}

money money::operator ++()
{
    dollars++;

    return money(dollars,cents);
}

int money::get_dollars() const
{
    return dollars;
}

int money::get_cents() const
{
    return cents;
}

void money::set_dollars(int d_in)
{
    dollars = d_in;
}


void money::set_cents(int c_in)
{
    cents = c_in;
}

ostream& operator <<(ostream& os, const money& rhs)
{
    os << \"$\" << rhs.get_dollars() << \".\";

    if(rhs.get_cents() < 10)
    {
        os << \"0\";
    }

    os << rhs.get_cents();

    return os;
}

money money::operator +(const money& rhs)
{
    int tmp_d = 0;
    int tmp_c = 0;
    int hold_c = 0;
    int hold_d = 0;

    tmp_d = get_dollars() + rhs.get_dollars();
    tmp_c = get_cents() + rhs.get_cents();

    if(tmp_c > 99)
    {
        hold_c = tmp_c % 100;
        cout << \"hold_c = \" << hold_c << endl;

        hold_d = tmp_c / 100;
        cout << \"hold_d = \" << hold_d << endl;

        for(int i = 0; i < hold_d; i++)
        {
            tmp_d++;
        }

        tmp_c = hold_c;
    }


    return money(tmp_d, tmp_c);
}


const money& operator +(const money& lhs, const money& rhs)
{
    int tmp_d = 0;
    int tmp_c = 0;
    int hold_c = 0;
    int hold_d = 0;


    tmp_d = lhs.dollars + rhs.dollars;
    tmp_c = lhs.cents + rhs.cents;

    if(tmp_c > 99)
    {
        hold_c = tmp_c % 100;
        cout << \"hold_c = \" << hold_c << endl;

        hold_d = tmp_c / 100;
        cout << \"hold_d = \" << hold_d << endl;

        for(int i = 0; i < hold_d; i++)
        {
            tmp_d++;
        }

        tmp_c = hold_c;
    }

    return money(tmp_d, tmp_c);
}

bool money::operator ==(const money& rhs)
{
    return ((get_dollars() == rhs.get_dollars()) && (get_cents() == rhs.get_cents()));
}

bool money::operator <=(money m)
{
   if(dollars< m.dollars)
       return true;
   else if(dollars==m.dollars)
   {
       if(cents < m.cents)
           return true;
       else if(cents > m.cents) return false;
   }
   else return false;
}
bool money::operator >=(money m)
{
   if(dollars > m.dollars)
       return true;
   else if(dollars==m.dollars)
   {
       if(cents > m.cents)
           return true;
       else if(cents < m.cents) return false;
   }
   else return false;
}


int main()
{
    money m1;
    money m2(100, 99);
    money m3(250, 5);

    cout << \"m1 = \" << m1 << endl;
    cout << \"m2 = \" << m2 << endl;
    cout << \"m3 = \" << m3 << endl;

    m1 = m2 + m3;

    cout << \"m1 = \" << m1 << endl;
    m1 = m1 + 200;
    cout << \"m1 + 200 \" << endl;
    cout << \"m1 = \" << m1 << endl;

    cout << \"m2 + m3\" << endl;

    cout << \"m1 = \" << m1 << endl;

    cout << \"m2 == m1 \" << endl;

    cout << \"m1 = \" << m1 << endl;
    cout << \"m2 = \" << m2 << endl;
    cout << (m2 == m1) << endl;

    m1 = money();
    m2 = money();

    cout << \"m1 = \" << m1 << endl;
    cout << \"m2 = \" << m2 << endl;
    cout << (m2 == m1) << endl;

    cout << \"++m1 \" << endl;
    ++m1;
    cout << \"m1 = \" << m1 << endl;

    cout << \"m1++\" << endl;
    cout << m1++ << endl;
    cout << \"m1 = \" << m1 << endl;

    cout << \"-m1 = \" << -m1 << endl;

    m2 = money(1, 0);
    m3 = money(2, 0);

    money tm;
    tm = (m3 + -m2);

    cout << \"m3 = \" << m3 << endl;
    cout << \"m2 = \" << m2 << endl;
    cout << \"(m3 + -m2) = \" << tm << endl;

    m1 = money();
    m2 = money(101, 78);
    m3 = money(202, 10);


    if(m2 <= m3)
   cout << \"m2 <= m3\" << endl;
   else cout << \"m2 is not <= m3\" << endl;

    if(m2 >= m3)
   cout << \"m2 >= m3\" << endl;
   else cout << \"m2 is not >= m3\" << endl;

    m1 = m3 * m2;
    cout << \"m3 * m2 = \" << m1 << endl;

    m1 = m3 - m2;
    cout << \"m3 - m2 = \" << m1 << endl;


    return 0;
}

Hey, looking to do the following with this programFill in the multiplication, and division , modulus, <=, >=, -, * With division being a friend function 1
Hey, looking to do the following with this programFill in the multiplication, and division , modulus, <=, >=, -, * With division being a friend function 1
Hey, looking to do the following with this programFill in the multiplication, and division , modulus, <=, >=, -, * With division being a friend function 1
Hey, looking to do the following with this programFill in the multiplication, and division , modulus, <=, >=, -, * With division being a friend function 1
Hey, looking to do the following with this programFill in the multiplication, and division , modulus, <=, >=, -, * With division being a friend function 1
Hey, looking to do the following with this programFill in the multiplication, and division , modulus, <=, >=, -, * With division being a friend function 1
Hey, looking to do the following with this programFill in the multiplication, and division , modulus, <=, >=, -, * With division being a friend function 1
Hey, looking to do the following with this programFill in the multiplication, and division , modulus, <=, >=, -, * With division being a friend function 1
Hey, looking to do the following with this programFill in the multiplication, and division , modulus, <=, >=, -, * With division being a friend function 1

Get Help Now

Submit a Take Down Notice

Tutor
Tutor: Dr Jack
Most rated tutor on our site