#include using namespace std; struct Time { int hour, minute; // in the ranges 0..23 and 0..59, respectively double second; // 0.0 <= second < 60.0 }; void printTime (const Time& t) { cout << t.hour << ":" << t.minute << ":" << t.second << endl; } // after(time1, time2) returns true if time1 is after time2 bool after (const Time& time1, const Time& time2) { if (time1.hour > time2.hour) return true; if (time1.hour < time2.hour) return false; // hours are the same if (time1.minute > time2.minute) return true; if (time1.minute < time2.minute) return false; // minutes are the same return (time1.second > time2.second); } Time addTime (const Time& t1, const Time& t2) { Time sum; sum.hour = t1.hour + t2.hour; sum.minute = t1.minute + t2.minute; sum.second = t1.second + t2.second; // regularize the fields while (sum.second >= 60.0) { sum.second -= 60.0; sum.minute++; } while (sum.minute >= 60) { sum.minute -= 60; sum.hour++; } return sum; } double convertToSeconds (const Time& t) { const int minutes = t.hour * 60 + t.minute; const double seconds = minutes * 60 + t.second; return seconds; } Time makeTime (double secs) { Time time; time.hour = int (secs / 3600.); secs -= time.hour * 3600.0; time.minute = int (secs / 60.0); secs -= time.minute * 60.0; time.second = secs; return time; } void addToTime (const Time& t, Time& tDest) { const double seconds = convertToSeconds(t) + convertToSeconds(tDest); tDest = makeTime (seconds); } int main () { // insert code here... Time time = { 11, 59, 3.14159 }; Time earlierTime = { 5, 0, 15}; printTime (time); cout << after(time, earlierTime) << ", " << after(earlierTime, time) << endl; printTime( addTime (time, earlierTime) ); Time start = {14, 10, 0}; Time length = {0, 75, 0}; printTime (start); addToTime (length, start); printTime (start); return 0; }