/******************************************************************************************** compass.h Jim Millard Practical 10 ********************************************************************************************/ #include "compass.h" #include <iostream> using namespace std; //------- Enhanced Default Constructor ------- compass::compass(const int d, const int m, const int s) { degree=0; minute = 0; second = 0; addSecond(s); addMinute(m); addDegree(d); } //------- Print the object in "pretty" format ------- void compass::print(ostream& out) const { if (degree < 100) out << '0'; if (degree < 10) out << '0'; out << degree << '\370'; if (minute < 10) out << '0'; out << minute << '\''; if (second < 10) out << '0'; out << second << '\"'; }; //------- "managed" addition functions ------- void compass::addDegree(const int d) { degree = (degree + d) % 360; } void compass::addMinute(const int m) { addDegree((minute + m) / 60); minute = (minute + m) % 60; } void compass::addSecond(const int s) { addMinute((second + s)/60); second = (second + s) % 60; } void compass::addSame(const compass& C) { addDegree(C.degree); addMinute(C.minute); addSecond(C.second); }