//Date.cc
#include <iostream>
using namespace std;
class Date {
int d, m, y;
static Date today; //(A)
public :
Date( int dd = 0 , int mm = 0 , int yy = 0 ) ;
static void setToday( int , int , int ) ; //(B)
static Date getToday( ) ; //(C)
void print( ) {
cout << "day: " << d << " month: " << m
<< " year: " << y << endl;
}
} ;
Date:: Date ( int dd, int mm, int yy ) {
d = dd ? dd : today.d ;
m = mm ? mm : today.m ;
y = yy ? yy : today.y ;
}
void Date:: setToday ( int dd, int mm, int yy ) { //(D)
today = Date( dd, mm, yy) ;
}
int Date:: getToday ( ) {
return today;
}
Date Date:: today ( 31 , 10 , 2001 ) ; //(E)
int main( )
{
Date d1( 1 , 1 , 1970 ) ;
d1.print ( ) ; //day: 1 month: 1 year: 1970
Date d2( 2 ) ;
d2.print ( ) ; //day: 2 month: 10 year: 2001
Date:: setToday ( 3 , 4 , 2000 ) ; //(F)
Date:: getToday ( ) .print ( ) ; //day: 3 month: 4 year: 2000 //(G)
Date d3( 7 ) ;
d3.print ( ) ; //day: 7 month: 4 year: 2000
Date d4 = Date( ) ;
d4.print ( ) ; //day: 3 month: 4 year: 2000
return 0 ;
}
Ci8vRGF0ZS5jYwoKI2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgRGF0ZSB7CiAgICBpbnQgZCwgbSwgeTsKICAgIHN0YXRpYyBEYXRlIHRvZGF5OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8oQSkKcHVibGljOgogICAgRGF0ZSggaW50IGRkID0gMCwgaW50IG1tID0gMCwgaW50IHl5ID0gMCApOyAgICAKICAgIHN0YXRpYyB2b2lkIHNldFRvZGF5KGludCwgaW50LCBpbnQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgLy8oQikKICAgIHN0YXRpYyBEYXRlIGdldFRvZGF5KCk7ICAgICAgICAgICAgICAgICAgICAvLyhDKQogICAgdm9pZCBwcmludCgpIHsKICAgICAgICBjb3V0IDw8ICJkYXk6ICIgPDwgZCA8PCAiIG1vbnRoOiAiIDw8IG0gCiAgICAgICAgICAgICA8PCAiIHllYXI6ICIgPDwgeSA8PCBlbmRsOyAKICAgIH0KfTsKCkRhdGU6OkRhdGUoIGludCBkZCwgaW50IG1tLCBpbnQgeXkgKSB7CiAgICBkID0gZGQgPyBkZCA6IHRvZGF5LmQ7CiAgICBtID0gbW0gPyBtbSA6IHRvZGF5Lm07CiAgICB5ID0geXkgPyB5eSA6IHRvZGF5Lnk7Cn0KCnZvaWQgRGF0ZTo6c2V0VG9kYXkoIGludCBkZCwgaW50IG1tLCBpbnQgeXkgKSB7ICAgICAgICAgICAgICAgICAgIC8vKEQpCiAgICB0b2RheSA9IERhdGUoZGQsIG1tLCB5eSk7Cn0KaW50IERhdGU6OmdldFRvZGF5KCl7CgkgcmV0dXJuIHRvZGF5OyAgCn0KCkRhdGUgRGF0ZTo6dG9kYXkoIDMxLCAxMCwgMjAwMSApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vKEUpCgppbnQgbWFpbigpCnsKICAgIERhdGUgZDEoIDEsIDEsIDE5NzApOwogICAgZDEucHJpbnQoKTsgICAgICAgICAgICAgICAgIC8vZGF5OiAxICBtb250aDogMSAgeWVhcjogMTk3MAogICAgRGF0ZSBkMiggMiApOwogICAgZDIucHJpbnQoKTsgICAgICAgICAgICAgICAgIC8vZGF5OiAyICBtb250aDogMTAgeWVhcjogMjAwMQogICAgRGF0ZTo6c2V0VG9kYXkoMywgNCwgMjAwMCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyhGKQogICAgRGF0ZTo6Z2V0VG9kYXkoKS5wcmludCgpOyAgIC8vZGF5OiAzICBtb250aDogNCAgeWVhcjogMjAwMCAgICAvLyhHKQogICAgRGF0ZSBkMyggNyApOwogICAgZDMucHJpbnQoKTsgICAgICAgICAgICAgICAgIC8vZGF5OiA3ICBtb250aDogNCAgeWVhcjogMjAwMAogICAgRGF0ZSBkNCA9IERhdGUoKTsKICAgIGQ0LnByaW50KCk7ICAgICAgICAgICAgICAgICAvL2RheTogMyAgbW9udGg6IDQgIHllYXI6IDIwMDAKICAgIHJldHVybiAwOwp9