⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 polynomial.cpp

📁 多项式运算标准算法,美国大学教材原版代码
💻 CPP
字号:
    /*
     * This code doesn't really do much, and abstraction is not built in.
     * Thus, I haven't bothered testing it exhaustively.
     */
    #include <iostream.h>
    #include "vector.h"

    class Polynomial
    {
        enum { MAX_DEGREE = 100 };
        friend int main( );   // So I can do a quick test.

      public:
        Polynomial( );
        void zeroPolynomial( );
        Polynomial operator+( const Polynomial & rhs ) const;
        Polynomial operator*( const Polynomial & rhs ) const;
        void print( ostream & out ) const;
  
      private:
        vector<int> coeffArray;
        int highPower;
    };


        int max( int a, int b )
        {
             return a > b ? a : b;
        }

        Polynomial::Polynomial( ) : coeffArray( MAX_DEGREE + 1 )
        {
           zeroPolynomial( );
        }

        void Polynomial::zeroPolynomial( )
        {
            for( int i = 0; i <= MAX_DEGREE; i++ )
                coeffArray[ i ] = 0;
            highPower = 0;
        }

        Polynomial Polynomial::operator+( const Polynomial & rhs ) const
        {
            Polynomial sum;

            sum.highPower = max( highPower, rhs.highPower );
            for( int i = sum.highPower; i >= 0; i-- )
                sum.coeffArray[ i ] = coeffArray[ i ] + rhs.coeffArray[ i ];
            return sum;
        }

        Polynomial Polynomial::operator*( const Polynomial & rhs ) const
        {
            Polynomial product;

            product.highPower = highPower + rhs.highPower;
            if( product.highPower > MAX_DEGREE )
                cerr << "operator* exceeded MAX_DEGREE" << endl;
            for( int i = 0; i <= highPower; i++ )
                for( int j = 0; j <= rhs.highPower; j++ )
                    product.coeffArray[ i + j ] +=
                            coeffArray[ i ] * rhs.coeffArray[ j ];
            return product;
        }

        void Polynomial::print( ostream & out ) const
        {
            for( int i = highPower; i > 0; i-- )
                out << coeffArray[ i ] << "X^" << i << " + ";
            out << coeffArray[ 0 ] << endl;
        }

        ostream & operator<<( ostream & out, const Polynomial & rhs )
        {
            rhs.print( out );
            return out;
        }

        int main( )
        {
            Polynomial p;
            Polynomial q;
			Polynomial Sum;
			Polynomial Product;

            p.highPower = 7; p.coeffArray[ 0 ] = 10; p.coeffArray[ 1 ] = -2; p.coeffArray[ 2 ] = 3; p.coeffArray[ 5 ] = 5; p.coeffArray[ 7 ] = 6; 
			q.highPower = 4; q.coeffArray[ 0 ] = 3; q.coeffArray[ 1 ] = 1; q.coeffArray[ 3 ] = 2; q.coeffArray[ 4 ] = -3;

			Sum = p + q;
			Product = p * q;

            //p = p + p;
            //p = q * q;
            //q = p + p;
			cout << "\n      # ### ##### ########### Result of Sum&Product ########### ##### ### # \n";
			cout << "\n\tP(X,Y):";
            cout << "\n\t   " << p << "\n";
			cout << "\n\tQ(X,Y):";
            cout << "\n\t   " << q << "\n";
			cout << "\n\tQ(X,Y)+P(X,Y):";
            cout << "\n\t   " << Sum << "\n";
			cout << "\n\tQ(X,Y)*P(X,Y):";
            cout << "\n\t   " << Product << "\n";

            return 0;
        }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -