#include #include #include using namespace std; typedef vector Poly; // does: prints all members of vector // input: c - ASCII char with the name of the vector // A - reference to polynomial (vector) void Print(char name, const Poly &A) { cout << name << "(" << A.size()-1 << ") = [ "; copy(A.begin(), A.end(), ostream_iterator(cout, " ")); cout << "]\n"; } int main() { Poly N, D, d, q, r; // vectors - N / D == q && N % D == r size_t dN, dD, dd, dq, dr; // degrees of vectors size_t i; // loop counter // setting the degrees of vectors cout << "Enter the degree of N: "; cin >> dN; cout << "Enter the degree of D: "; cin >> dD; dq = dN-dD; dr = dN-dD; if( dD < 1 || dN < 1 ) { cerr << "Error: degree of D and N must be positive.\n"; return 1; } // allocation and initialization of vectors N.resize(dN+1); cout << "Enter the coefficients of N:"<= dD ) { while(dN >= dD) { // d equals D shifted right d.assign(d.size(), 0); for( i = 0 ; i <= dD ; i++ ) d[i+dN-dD] = D[i]; dd = dN; Print( 'd', d ); // calculating one element of q q[dN-dD] = N[dN]/d[dd]; Print( 'q', q ); // d equals d * q[dN-dD] for( i = 0 ; i < dq + 1 ; i++ ) d[i] = d[i] * q[dN-dD]; Print( 'd', d ); // N equals N - d for( i = 0 ; i < dN + 1 ; i++ ) N[i] = N[i] - d[i]; dN--; Print( 'N', N ); cout << "-----------------------" << endl << endl; } } // r equals N for( i = 0 ; i <= dN ; i++ ) r[i] = N[i]; cout << "=========================" << endl << endl; cout << "-- Result --" << endl << endl; Print( 'q', q ); Print( 'r', r ); }