#include #include using namespace std; class Polinom { public: Polinom() : _Koeficijenti(1), _Stepen(0) { _Koeficijenti[0] = 0; } /* double& operator[] ( unsigned i ) { ... } */ void PromeniKoeficijent( unsigned i, double d ) { if( i>_Stepen ){ if( d!=0 ){ _Koeficijenti.resize( i+1, 0 ); _Koeficijenti[i] = d; _Stepen = i; } } else{ _Koeficijenti[i] = d; while( _Stepen>0 && _Koeficijenti[_Stepen]==0 ) _Stepen--; } } double operator[] ( unsigned i ) const { return i<=_Stepen ? _Koeficijenti[i] : 0; } double operator() ( double x ) const { double r = _Koeficijenti[_Stepen]; for( int i=_Stepen - 1; i>=0; i-- ) r = r * x + _Koeficijenti[i]; return r; } unsigned Stepen() const { return _Stepen; } void Ispis( ostream& ostr ) const { bool prvi = true; for( unsigned i=0; i<=_Stepen; i++ ) if( _Koeficijenti[i] != 0 ){ if(prvi) prvi = false; else ostr << " + "; ostr << _Koeficijenti[i]; if( i>0 ) ostr << " * x^" << i; } } private: vector _Koeficijenti; unsigned _Stepen; }; ostream& operator << ( ostream& ostr, const Polinom& p ) { p.Ispis(ostr); return ostr; } main() { Polinom p; p.PromeniKoeficijent(0,4); p.PromeniKoeficijent(2,2); p.PromeniKoeficijent(4,3); for( int i=0; i<=p.Stepen(); i++ ) cout << p[i] << ' '; cout << endl; cout << p(2) << endl; cout << p << endl; }