#include class cLuku { int a; public: virtual int low() { return 0; } virtual int high() { return 10; } cLuku(int ia=0) { set(ia); } int set(int n); int get(void) const; int lisaa(int i=1) { return set(get()+i); } }; int cLuku::set(int n) // esim n = -65, [0,59] => a = 55; yli = -2 { int ero = high()-low()+1; // 60 int arvo = n - low(); // -65 int jj = arvo%ero; // 55 if ( jj < 0 ) jj += ero; // riippuu ohj. kielest„ voiko tulla <0 a = jj + low(); // Nyt jj=55 a=55 return (arvo-jj)/ero; // -65-55=-120 => -2 } int cLuku::get(void) const { return a; } template class cLyla : public cLuku { public: int high() { return YLA-1; } }; class cKello { cLyla<60> m; cLyla<24> h; public: cKello(int ih=0, int im=0) { set(ih,im); } int set(int ih, int im) { return h.set(ih+m.set(im)); } int lisaa(int i) { return h.lisaa(m.lisaa(i)); } friend ostream &operator<<(ostream &os, const cKello &k) { os << k.h.get() << ":" << k.m.get(); return os; } }; int main(void) { cLuku luku(59); int yli = luku.set(-65); cout << "a= " << luku.get() << " yli " << yli << endl; cKello k(7,15); cout << k << " + 240 min = "; k.lisaa(240); cout << k << endl; return 0; }