/* * chap11.cpp */ #include using namespace std; /* * Time -- a structure for manipulating time of day. */ struct Time { // instance variables int hour, minute; double second; // constructors Time (int hour, int min, double secs); Time (double secs); // modifiers void increment (double secs); // member functions void print () const; bool after (const Time& time2) const; Time add (const Time& t2) const; double convertToSeconds () const; }; /* * Time member function definitions */ void Time::print () const { cout << hour << ":" << minute << ":" << second << endl; } void Time::increment (double secs) { second += secs; while (second >= 60.0) { second -= 60.0; minute += 1; } while (minute >= 60) { minute -= 60; hour += 1; } } bool Time::after (const Time& time2) const { if (hour > time2.hour) return true; if (hour < time2.hour) return false; if (minute > time2.minute) return true; if (minute < time2.minute) return false; if (second > time2.second) return true; return false; } double Time::convertToSeconds () const { const int minutes = hour * 60 + minute; const double seconds = minutes * 60 + second; return seconds; } Time::Time (double secs) { hour = int (secs / 3600.0); secs -= hour * 3600.0; minute = int (secs / 60.0); secs -= minute * 60.0; second = secs; } Time::Time (int h, int m, double s) { hour = h; minute = m; second = s; } Time Time::add (const Time& t2) const { const double seconds = convertToSeconds () + t2.convertToSeconds (); const Time time (seconds); return time; } int main() { Time currentTime ( 9, 14, 30.0 ); Time testTime (3600); testTime.print(); currentTime.print (); currentTime.increment (500.0); currentTime.print (); Time time (3600); time.print(); Time ready = time.add(testTime); ready.print(); return 0; }