donmike25 icon

midterm 2_1

donmike25 | PRO | 01/11/15 10:42:13 AM UTC | 0 ⭐ | 327 👁️ | Never ⏰ | []
C++ |

1.58 KB

|

None

|

0 👍

/

0 👎

#include <iostream>
#include <string>
using namespace std;
 
// Note: Implement parts (a), (b) & (c) as per the requirements of QUESTION_1.
class Mass
{
private:
    int m_Tonne;
    int m_Kilo;
    int m_Gram;
public:
    Mass(double inMass = 0.0){
        m_Tonne = inMass;
        m_Kilo = (inMass - m_Tonne) * 1000;
        m_Gram = ((inMass - m_Tonne) * 1000 - m_Kilo) * 1000;
    }
    Mass operator-(const Mass &a){
        Mass temp;
        
        temp.m_Gram = m_Gram - a.m_Gram;
        temp.m_Kilo = m_Kilo - a.m_Kilo;
        temp.m_Tonne = m_Tonne - a.m_Tonne; 
 
        if(temp.m_Tonne > 0){
            if(temp.m_Gram < 0){
                temp.m_Gram += 1000;
                temp.m_Kilo--;
            }
            if(temp.m_Kilo < 0){
                temp.m_Kilo += 1000;
                temp.m_Tonne--;
            }
        }
        if(temp.m_Tonne < 0){
            if(temp.m_Gram > 0){
                temp.m_Gram = abs(temp.m_Gram -= 1000);
                temp.m_Kilo++;
            }
            if(temp.m_Kilo > 0){
                temp.m_Kilo = abs(temp.m_Kilo -= 1000);
                temp.m_Tonne++;
            }
        }
 
        return temp;
    }
     friend ostream &operator<<(ostream &out, const Mass &a){
        out << a.m_Tonne << " t, " << a.m_Kilo << " kg and " << a.m_Gram << " g";
        return out;
    }
};
 
// Driver program (will not compile until you complete parts (a), (b) & (c) of QUESTION 1.
// DO NOT Modify the main() function.
int main()
{
    Mass massOne(6.2004);
    Mass massTwo(4.3659);
    Mass subMass1, subMass2;
 
    subMass1 = massOne - massTwo;
    subMass2 = massTwo - massOne;
 
    cout << "Mass 1 = " << massOne << endl;
    cout << "Mass 2 = " << massTwo << endl;
    cout << "Mass 1 - Mass 2 = " << subMass1 << endl;
    cout << "Mass 2 - Mass 1 = " << subMass2 << endl;
 
    return 0;
}

Comments