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

  1. // ex07007.cpp
  2. // Converting classes
  3. #include <iostream.h>
  4.  
  5. // -------- Julian date class
  6. class Julian {
  7. public:
  8.     int da, yr;
  9.     Julian() {}
  10.     Julian(int d, int y) { da = d; yr = y;}
  11.     void display(){    cout << '\n' << yr << '-' << da; }
  12. };
  13.  
  14. // ------- date class
  15. class Date {
  16.     int mo, da, yr;
  17. public:
  18.     Date() {}
  19.     Date(int m, int d, int y) { mo = m; da = d; yr = y; }
  20.     Date(Julian);         // constructor conversion function
  21.     operator Julian();   // member conversion function
  22.     void display(){cout << '\n' << mo << '/' << da 
  23.                         << '/' << yr;}
  24. };
  25.  
  26. static int dys[] = {31,28,31,30,31,30,31,31,30,31,30,31};
  27.  
  28. // ---- constructor conversion function (Date <- Julian)
  29. Date::Date(Julian jd)
  30. {
  31.     yr = jd.yr;
  32.     da = jd.da;
  33.     for (mo = 0; mo < 11; mo++)
  34.         if (da > dys[mo])
  35.             da -= dys[mo];
  36.         else
  37.             break;
  38.     mo++;
  39. }
  40.  
  41.  
  42. // ---- member conversion function (Julian <- Date)
  43. Date::operator Julian()
  44. {
  45.     Julian jd(0, yr);
  46.     for (int i = 0; i < mo-1; i++)
  47.         jd.da += dys[i];
  48.     jd.da += da;
  49.     return jd;
  50. }
  51.  
  52. main()
  53. {
  54.     Date dt(11,17,89);
  55.     Julian jd;
  56.     // ------- convert Date to Julian
  57.     jd = dt;
  58.     jd.display();
  59.     // ------- convert Julian to Date
  60.     dt = jd;
  61.     dt.display();
  62. }
  63.