home *** CD-ROM | disk | FTP | other *** search
- // \EXAMPLES\EX0807.CPP
- // program using nesting classes
-
- //--------------------------------------------------------------
- #include <iostream.h>
-
- //--------------------------------------------------------------
- // definition of class Date
- // Definition of struct Date::DMY
-
- class Date {
- struct DMY {
- int day;
- int month;
- int year;
- int leapyear();
- };
- DMY calendar;
- long days;
- public:
- Date(int d, int m, int y);
- Date () {};
- long getdays() {return days; };
- };
- //--------------------------------------------------------------
- // member function of Date
-
- Date::Date(int d, int m, int y )
- { calendar.day = d;
- calendar.month = m;
- y = y - 50;
- calendar.year = y;
- days = y * 365 + y/4;
- int mdays[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31 };
- if ( calendar.leapyear() && m < 3 ) days--;
- for (int i = 0; i < m; i++ ) days += mdays[i];
- days += d;
- }
- //--------------------------------------------------------------
- // member function of DMY
-
- int Date::DMY::leapyear()
- // return 1 if year is a leapyear
- // return 0 otherwise
- { if ( year % 100 == 0 ) return 0;
- if ( year % 4 == 0 ) return 1;
- return 0;
- }
-
- //--------------------------------------------------------------
- // main() to exercise Date and DMY
-
- void main()
- {
- int d, m, y;
- do
- { cout << "Enter a date as three 2-digit numbers" << endl;
- cout << " day month year: ";
- cin >> d >> m >> y;
- } while ( y < 0 || y > 99 );
- Date dmy (d,m,y);
- cout << "The number of days after 1 Jan 1950: ";
- cout << dmy.getdays() -1;
- cout << endl;
- }
- //--------------------------------------------------------------
-