#include #include using namespace std; #include "Time.h" ostream& operator <<(ostream &sout, const Time &t) { sout << t.m_hour; if (t.m_minute < 10) sout << ":0" << t.m_minute; else sout << ":" << t.m_minute; return sout; } Time::Time() : m_hour(12), m_minute(0) { /* empty constructor body */ } Time::Time(int hour, int minute) : m_hour(hour), m_minute(minute) { CheckValidity(); } void Time::Input() { cin >> m_hour >> m_minute; CheckValidity(); } int Time::GetHour() const { return m_hour; } int Time::GetMinutes() const { return m_minute; } void Time::CheckValidity() const { if (m_hour < 0 || m_hour > 24) { cerr << "Error (Time): invalid hour" << endl; exit(1); } if (m_minute < 0 || m_minute > 59) { cerr << "Error (Time): invalid minutes" << endl; exit(1); } } const Time operator +(const Time &t, int deltaMinutes) { int newMinutes = t.GetMinutes() + deltaMinutes; int deltaHours = newMinutes / 60; int newHours = t.GetHour() + deltaHours; int minute = newMinutes % 60; int hour = newHours % 24; return Time(hour, minute); } bool operator ==(const Time &t1, const Time &t2) { return( t1.GetHour() == t2.GetHour() && t1.GetMinutes() == t2.GetMinutes() ); } bool operator >(const Time &t1, const Time &t2) { if ( t1.GetHour() > t2.GetHour() ) return true; else if ( t1.GetHour() == t2.GetHour() ) if ( t1.GetMinutes() > t2.GetMinutes() ) return true; else return false; else return false; } bool operator <(const Time &t1, const Time &t2) { return (t2 > t1); } bool operator >=(const Time &t1, const Time &t2) { return ( t1 > t2 || t1 == t2 ); } bool operator <=(const Time &t1, const Time &t2) { return ( t1 < t2 || t1 == t2 ); } bool operator !=(const Time &t1, const Time &t2) { return !(t1 == t2); }