// Time.cpp // Member-funciton definitions for class Time. #include using std::cout; #include using std::setfill; using std::setw; #include "time.h" // include definition of class Time from Time.h // Time constructor initializes each data member to zero; // ensures that Time objects start in a consistent state Time::Time( int hr, int min, int sec ) { setTime( hr, min, sec ); // validate and set time } // end Time constructor // set new Time value using universal time; ensure that // the data remains consistent by setting invalid values to zero void Time::setTime( int h, int m, int s ) { setHour( h ); // set private field hour setMinute( m ); // set private field minute setSecond( s ); // set private field second } // set hour value void Time::setHour( int h ) { int hour; hour = ( h >= 0 && h < 24 ) ? h : 0; // validate hour //ssm = hour * 60 * 60; } // set minute value void Time::setMinute( int m ) { int minute; int hssm; // value from ssm in setHour hssm = ssm; minute = ( m >= 0 && m < 60 ) ? m : 0; // validate hour ssm = hssm + (minute * 60); } // set second value void Time::setSecond( int s ) { int hmssm; // value from ssm in setMinute int second; hmssm = ssm; second = ( s >= 0 && s < 60 ) ? s : 0; // validate second ssm = hmssm + second; } // return hour value int Time::getHour() { int hour; hour = (ssm / 60) / 60; ssmLeft = ssm % ((ssm / 60) / 60); ssm = ssmLeft; return hour; } // return minute value int Time::getMinute() { int minute; minute = ssm / 60; ssmLeft = ssm % (ssm / 60); ssm = ssmLeft; return minute; } // return second value int Time::getSecond() { int second; second = ssmLeft; return second; } // print Time in universal-time format (HH:MM:SS) void Time::printUniversal() { cout << setfill( '0' ) << setw( 2 ) << getHour() << ":" << setw( 2 ) << getMinute() << ":" << setw( 2 ) << getSecond(); } // print Time in standard-time format (HH:MM:SS AM or PM) void Time::printStandard() { cout << ( ( getHour() == 0 || getHour() == 12 ) ? 12 : getHour() % 12 ) << ":" << setfill( '0' ) << setw( 2 ) << getMinute() << ":" << setw( 2 ) << getSecond() << ( ssm < 43200 ? " AM" : " PM" ); }