// Пример за структура Time // FIG6_1.CPP // Create a structure, set its members, and print it. #include struct Time { // structure definition int hour; // 0-23 int minute; // 0-59 int second; // 0-59 }; void printMilitary(const Time &); // prototype void printStandard(const Time &); // prototype main() { Time dinnerTime; // variable of new type Time // set members to valid values dinnerTime.hour = 18; dinnerTime.minute = 30; dinnerTime.second = 0; cout << "Dinner will be held at "; printMilitary(dinnerTime); cout << " military time," << endl << "which is "; printStandard(dinnerTime); cout << " standard time." << endl; // set members to invalid values dinnerTime.hour = 29; dinnerTime.minute = 73; dinnerTime.second = 103; cout << endl << "Time with invalid values: "; printMilitary(dinnerTime); cout << endl; return 0; } // Print the time in military format void printMilitary(const Time &t) { cout << (t.hour < 10 ? "0" : "") << t.hour << ":" << (t.minute < 10 ? "0" : "") << t.minute << ":" << (t.second < 10 ? "0" : "") << t.second; } // Print the time in standard format void printStandard(const Time &t) { cout << ((t.hour == 0 || t.hour == 12) ? 12 : t.hour % 12) << ":" << (t.minute < 10 ? "0" : "") << t.minute << ":" << (t.second < 10 ? "0" : "") << t.second << (t.hour < 12 ? " AM" : " PM"); } ---------------------------------------------------------------- // Пример за клас Time // FIG6_3.CPP // Time class. #include // Time abstract data type (ADT) definition class Time { public: Time(); // constructor void setTime(int, int, int); // set hour, minute and second void printMilitary(); // print military time format void printStandard(); // print standard time format private: int hour; // 0 - 23 int minute; // 0 - 59 int second; // 0 - 59 }; // Time constructor initializes each data member to zero. // Ensures all Time objects start in a consistent state. Time::Time() { hour = minute = second = 0; } // Set a new Time value using military time. Perform validity // checks on the data values. Set invalid values to zero. void Time::setTime(int h, int m, int s) { hour = (h >= 0 && h < 24) ? h : 0; minute = (m >= 0 && m < 60) ? m : 0; second = (s >= 0 && s < 60) ? s : 0; } // Print Time in military format void Time::printMilitary() { cout << (hour < 10 ? "0" : "") << hour << ":" << (minute < 10 ? "0" : "") << minute << ":" << (second < 10 ? "0" : "") << second; } // Print time in standard format void Time::printStandard() { cout << ((hour == 0 || hour == 12) ? 12 : hour % 12) << ":" << (minute < 10 ? "0" : "") << minute << ":" << (second < 10 ? "0" : "") << second << (hour < 12 ? " AM" : " PM"); } // Driver to test simple class Time main() { Time t; // instantiate object t of class Time cout << "The initial military time is "; t.printMilitary(); cout << endl << "The initial standard time is "; t.printStandard(); t.setTime(13, 27, 6); cout << endl << endl << "Military time after setTime is "; t.printMilitary(); cout << endl << "Standard time after setTime is "; t.printStandard(); t.setTime(99, 99, 99); // attempt invalid settings cout << endl << endl << "After attempting invalid settings:" << endl << "Military time: "; t.printMilitary(); cout << endl << "Standard time: "; t.printStandard(); cout << endl; return 0; } ---------------------------------------------------------------- ---------------------------------------------------------------- // Пример за разделяне на програмата в 3 файла // TIME1.H // Declaration of the Time class. // Member functions are defined in TIME.CPP // prevent multiple inclusions of header file #ifndef TIME1_H #define TIME1_H // Time abstract data type definition class Time { public: Time(); // constructor void setTime(int, int, int); // set hour, minute and second void printMilitary(); // print military time format void printStandard(); // print standard time format private: int hour; // 0 - 23 int minute; // 0 - 59 int second; // 0 - 59 }; #endif ------ // TIME1.CPP // Member function definitions for Time class. #include #include "time1.h" // Time constructor initializes each data member to zero. // Ensures all Time objects start in a consistent state. Time::Time() { hour = minute = second = 0; } // Set a new Time value using military time. // Perform validity checks on the data values. // Set invalid values to zero (consistent state). void Time::setTime(int h, int m, int s) { hour = (h >= 0 && h < 24) ? h : 0; minute = (m >= 0 && m < 60) ? m : 0; second = (s >= 0 && s < 60) ? s : 0; } // Print Time in military format void Time::printMilitary() { cout << (hour < 10 ? "0" : "") << hour << ":" << (minute < 10 ? "0" : "") << minute << ":" << (second < 10 ? "0" : "") << second; } // Print time in standard format void Time::printStandard() { cout << ((hour == 0 || hour == 12) ? 12 : hour % 12) << ":" << (minute < 10 ? "0" : "") << minute << ":" << (second < 10 ? "0" : "") << second << (hour < 12 ? " AM" : " PM"); } ------- // FIG6_5.CPP // Driver for Time1 class // NOTE: Compile with TIME1.CPP #include #include "time1.h" // Driver to test simple class Time main() { Time t; // instantiate object t of class time cout << "The initial military time is "; t.printMilitary(); cout << endl << "The initial standard time is "; t.printStandard(); t.setTime(13, 27, 6); cout << endl << endl << "Military time after setTime is "; t.printMilitary(); cout << endl << "Standard time after setTime is "; t.printStandard(); t.setTime(99, 99, 99); // attempt invalid settings cout << endl << endl << "After attempting invalid settings:" << endl << "Military time: "; t.printMilitary(); cout << endl << "Standard time: "; t.printStandard(); cout << endl; return 0; } ---------------------------------------------------------------- // Използване на конструктор и конструктор с подразбиращи се // аргументи // TIME2.H // Declaration of the Time class. // Member functions defined in TIME2.CPP // prevent multiple inclusions of header file #ifndef TIME2_H #define TIME2_H class Time { public: Time(int = 0, int = 0, int = 0); // default constructor void setTime(int, int, int); void printMilitary(); void printStandard(); private: int hour; int minute; int second; }; #endif ------ // TIME2.CPP // Member function definitions for Time class. #include #include "time2.h" // Constructor function to initialize private data. // Default values are 0 (see class definition). Time::Time(int hr, int min, int sec) { setTime(hr, min, sec); } // Set values of hour, minute, and second. // Invalid values are set to 0. void Time::setTime(int h, int m, int s) { hour = (h >= 0 && h < 24) ? h : 0; minute = (m >= 0 && m < 60) ? m : 0; second = (s >= 0 && s < 60) ? s : 0; } // Display time in military format: HH:MM:SS void Time::printMilitary() { cout << (hour < 10 ? "0" : "") << hour << ":" << (minute < 10 ? "0" : "") << minute << ":" << (second < 10 ? "0" : "") << second; } // Display time in standard format: HH:MM:SS AM (or PM) void Time::printStandard() { cout << ((hour == 0 || hour == 12) ? 12 : hour % 12) << ":" << (minute < 10 ? "0" : "") << minute << ":" << (second < 10 ? "0" : "") << second << (hour < 12 ? " AM" : " PM"); } ------- // FIG6_8.CPP // Demonstrating a default constructor // function for class Time. #include #include "time2.h" main() { Time t1, t2(2), t3(21, 34), t4(12, 25, 42), t5(27, 74, 99); cout << "Constructed with:" << endl << "all arguments defaulted:" << endl << " "; t1.printMilitary(); cout << endl << " "; t1.printStandard(); cout << endl << "hour specified; minute and second defaulted:" << endl << " "; t2.printMilitary(); cout << endl << " "; t2.printStandard(); cout << endl << "hour and minute specified; second defaulted:" << endl << " "; t3.printMilitary(); cout << endl << " "; t3.printStandard(); cout << endl << "hour, minute, and second specified:" << endl << " "; t4.printMilitary(); cout << endl << " "; t4.printStandard(); cout << endl << "all invalid values specified:" << endl << " "; t5.printMilitary(); cout << endl << " "; t5.printStandard(); cout << endl; return 0; } -------------------------------------------------------------