/* Problem 25 */ #include using namespace std; class base { int *x; int sz; public: base(int cnt) { x = new int [sz = cnt]; seed(2); } ~base() { if (x) delete [] x; } void seed(int val) { for (int i = 0; i < sz; i++) x[i] = val + i; } void seed(const int v[]) { for (int i = 0; i < sz; i++) x[i] = v[i]; } int term(int n) const { int *p = new int [sz]; int i, tmp; for (i = 0; i < sz; i++) p[i] = x[i]; tmp = p[0]; for (int k = 0; k < n; k++) { for (i = 1; i < sz; i++) { tmp += p[i]; p[i - 1] = p[i]; } p[i - 1] = tmp; tmp = p[0]; } delete [] p; return tmp; } }; ostream &operator<<(ostream &os, const base &x) { for (int i = 0; i < 7; i++) os << (i > 0 ? ", " : "" ) << x.term(i); return os; } class deranged: public base { public: deranged(int n, int m): base(2) { int sval[2]; sval[0] = n; sval[1] = m; seed(sval); } }; int main() { base x(3); deranged fib(4, 5); cout << x << '\n' << fib << '\n'; return 0; }