#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