home *** CD-ROM | disk | FTP | other *** search
/ CD Actual 13 / CDA13.ISO / cdactual / demobin / share / program / C / ANSICPP.ZIP / TIMES.H < prev    next >
Encoding:
C/C++ Source or Header  |  1990-07-24  |  1.3 KB  |  68 lines

  1. // ex09010
  2. // Header file to redefine the time classes with virtual functions
  3. // ---------- times.h
  4.  
  5. #ifndef TIMES_H
  6. #define TIMES_H
  7.  
  8. #include <iostream.h>
  9. #include <stdio.h>
  10.  
  11. //
  12. // A Time Class
  13. //
  14.  
  15. class Time    {
  16.     int hours, minutes, seconds;
  17. public:
  18.     Time(int hr, int min, int sec)
  19.         { hours = hr; minutes = min; seconds = sec; }
  20.     virtual void display()
  21.         { cout << hours << ':' << minutes << ':' << seconds; }
  22. };
  23.  
  24. //
  25. // A TimeZone Class
  26. //
  27. enum timezone { gmt, est, cst, mst, pst };
  28. char *TZ[] = { "GMT", "EST", "CST", "MST", "PST" };
  29.  
  30. class TimeZone    : public Time {
  31. protected:
  32.      timezone zone;
  33. public:
  34.     TimeZone(int hr, int min, int sec, timezone zn) 
  35.             : Time(hr, min, sec)
  36.         { zone = zn; }
  37.     virtual void display()
  38.         { Time::display(); cout << ' ' << TZ [zone]; }
  39. };
  40.  
  41.  
  42.  
  43. //
  44. // A DispTime Class
  45. //
  46.  
  47. inline int adjust(int hour)
  48. {    return hour > 12 ? hour - 12 : (hour == 0 ? 12 : hour); }
  49.  
  50. inline char makeampm(int hour) 
  51. {    return hour < 12 ? 'a' : 'p'; }
  52.  
  53. class DispTime    : public TimeZone {
  54. protected:
  55.     char ampm;
  56. public:
  57.     DispTime(int hr, int min, int sec, timezone zn) 
  58.             : TimeZone(adjust(hr), min, sec, zn)
  59.         { ampm = makeampm(hr); }
  60.     void display()    {
  61.         Time::display();
  62.         cout << ' ' << ampm << 'm';
  63.         cout << ' ' << TZ [zone];
  64.     }
  65. };
  66.  
  67. #endif
  68.