/* pvm.cpp */ // Malliohjelma p„iv„m„„r„n k„ytt„mises„/ vl-97 #include #include #include #include //--------------------------------------------------------------------------- // P„iv„m„„r„-luokka, mukana vain p„iv„ykseen liittyv„ class cPvm { private: int pv; int kk; int vv; public: const cPvm &paivays() { // Palautetaan nykyinen p„iv„m„„r„ pv = 14; kk = 2; vv = 2000; return *this; } void alusta(int ap=0,int ak=0, int av=0) { paivays(); if ( ap > 0 ) pv = ap; if ( ak > 0 ) kk = ak; if ( av > 0 ) vv = av; if ( vv < 50 ) vv += 2000; if ( vv < 100 ) vv += 1900; } cPvm(int ap=0,int ak=0, int av=0) { alusta(ap,ak,av); } ostream &tulosta(ostream &os = cout) const { char oldf = os.fill('0'); os << setw(2) << pv << "." << setw(2) << kk << "." << setw(4) << vv; os.fill(oldf); return os; } cPvm &operator=(const char *s) { int p=0,k=0,v=0; sscanf(s,"%d.%d.%d",&p,&k,&v); alusta(p,k,v); return *this; } }; // cPvm //--------------------------------------------------------------------------- ostream &operator<<(ostream &os,const cPvm &pvm) { return pvm.tulosta(os); } //--------------------------------------------------------------------------- int main(void) { cPvm tammi2000(1,1), maalis97(1,3,97), tanaan; cout << tammi2000 << " " << maalis97 << " " << tanaan << endl; cPvm pvm; pvm = "12.1.1995"; cout << pvm << endl; pvm = "15.2" ; cout << pvm << endl; pvm = "14" ; cout << pvm << endl; return 0; }