#include #include using std::cin; using std::cout; using std::setw; struct time { int hour, min, sec; time(int h, int m, int s) { hour = h; min = m; sec = s; } time() { hour = 0; min = 0; sec = 0; } friend std::ostream& operator << (std::ostream& out, const time& thetime) { char old = out.fill(); out.fill('0'); out << setw(2) << thetime.hour << ':' << setw(2) << thetime.min << ':' << setw(2) << thetime.sec; out.fill(old); return out; } }; typedef struct time t; t getTime(); t addTime(const t,const t); void printTime(const t); int main() { t first, second, result; char trash; for(;;) { first = getTime(); cin >> trash; if (cin.fail()) return 0; second = getTime(); result = addTime(first, second); std::cout << first << '+' << second << '=' << result << '\n'; } } t getTime() { //##:##:## t out; char junk; cin >> out.hour >> junk >> out.min >> junk >> out.sec; return out; } t addTime(const t first,const t second) { t result; result.sec = first.sec + second.sec; result.min = first.min + second.min; result.hour = first.hour + second.hour; if (result.sec > 59) { result.min++; result.sec -= 60; } if (result.min > 59) { result.hour++; result.min -= 60; } if (result.hour > 23) result.hour -= 24; return result; } void printTime(const t thetime) { cout.fill('0'); cout << setw(2) << thetime.hour << ':' << setw(2) << thetime.min << ':' << thetime.sec; }