1: // Filenme: TSTRUCT.CPP 2: // Purpose: Illustrates a simple struct for representing time. 4: #include <iostream> 5: using namespace std; 7: struct Time 8: { 9: int hours; 10: int minutes; 11: int seconds; 12: }; // <-- Note the (necessary) semi-colon! 14: void SetTime(/* out */ Time& t, 15: /* in */ int newHours, 16: /* in */ int newMinutes, 17: /* in */ int newSeconds); 18: void IncrementTime(/* inout */ Time& t); 19: void DisplayTime(/* in */ const Time& t); 22: int main() 23: { 24: cout << endl 25: << "This program uses a struct to " 26: << "represent time in military form. " << endl 27: << "You should study the source code " 28: << "at the same time as the output. " << endl 29: << endl; 31: Time t1 = {11, 59, 50}; // t1 initialized at time of declaration 33: Time t2; // t2 has its fields assigned after declaration 34: t2.hours = 10; 35: t2.minutes = 40; 36: t2.seconds = 45; 38: Time t3; // t3 is initialized by a call to SetTime 39: SetTime(t3, 12, 0, 0); 41: DisplayTime(t1); cout << endl; 42: DisplayTime(t2); cout << endl; 43: DisplayTime(t3); cout << endl; 44: cout << endl; 46: for (int i = 1; i <= 11; i++) 47: { 48: DisplayTime(t1); cout << endl; 49: IncrementTime(t1); 50: } 52: cout << endl; 54: return 0; 55: } 58: //****************************************************************** 59: void SetTime(/* out */ Time& t, 60: /* in */ int newHours, 61: /* in */ int newMinutes, 62: /* in */ int newSeconds) 63: // Pre: 0 <= newHours <= 23 64: // 0 <= newMinutes <= 59 65: // 0 <= newSeconds <= 59 66: // Post: Time t is set according to the incoming parameters. 67: // Note that this function must be called for t prior to a 68: // call to any other function with t as parameter. 69: { 70: t.hours = newHours; 71: t.minutes = newMinutes; 72: t.seconds = newSeconds; 73: } 76: //****************************************************************** 77: void IncrementTime(/* inout */ Time& t) 78: // Pre: t has been initialized. 79: // Post: t has been advanced by one second, with 80: // 23:59:59 wrapping around to 00:00:00. 81: { 82: t.seconds++; 83: if (t.seconds > 59) 84: { 85: t.seconds = 0; 86: t.minutes++; 87: if (t.minutes > 59) 88: { 89: t.minutes = 0; 90: t.hours++; 91: if (t.hours > 23) 92: t.hours = 0; 93: } 94: } 95: } 99: //****************************************************************** 100: void DisplayTime(/* in */ const Time& t) 101: // Pre: t has been initialized. 102: // Post: t has been output in the form HH:MM:SS. 103: { 104: if (t.hours < 10) 105: cout << '0'; 106: cout << t.hours << ':'; 107: if (t.minutes < 10) 108: cout << '0'; 109: cout << t.minutes << ':'; 110: if (t.seconds < 10) 111: cout << '0'; 112: cout << t.seconds; 113: }