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

📄 001suc.cpp

📁 数据结构中多项式加法数组实现数据结构中多项式加法数组实现
💻 CPP
字号:
#include  <iostream>
using namespace std;
 
class Polynomial;
class Term{
      friend class Polynomial;
public: 
        float coef;
        int  exp;
        };
class  Polynomial  
{    
friend ostream& operator<<(ostream&,const Polynomial&);
friend istream& operator>>(istream&,Polynomial&);
       
public:
       Polynomial(int maxTerms = 10);
       ~Polynomial(){delete[] a;}
       void Add(const Polynomial &b,Polynomial &c)const;
       
private: 
        void Append(const Term & t) ;
        int MaxTerms;
        int start,finish;
        Term *a;
        };
        Polynomial::Polynomial(int maxTerms) 
        {MaxTerms = maxTerms;
        a = new Term [MaxTerms];
        start=finish=0;
        };
        ostream& operator<<(ostream& out,const Polynomial& x) 
        {
               for(int i=0;i<x.finish;i++) 
               {out<<x.a[i].coef<<"X^"<<x.a[i].exp <<"+";}
               cout<<endl;
               return out;
               };
        istream& operator>>(istream& in,Polynomial& x)
        {      cout<<"开始输入多项式,按指数从小到大进行输入,当系数输入为0时输入结束"<<endl; 
               for(int i=0;i<x.MaxTerms;i++){
                       cout<<"输入多项式第"<<(i+1)<<"个系数"<<endl;
                       in>>x.a[i].coef; 
                       if(x.a[i].coef==0){return in;};
                       cout<<"输入多项式第"<<(i+1)<<"个指数"<<endl;
                       in>>x.a[i].exp;
                       x.finish++;
                        
               }
               } 
         void Polynomial::Append(const Term & t)
         {
               a[finish].coef=t.coef;
               a[finish].exp=t.exp;
               finish++;
               };
          void Polynomial::Add( const Polynomial &B, Polynomial &C) const
          {
           int ia = start;   
           int ib = B.start;   		//a, b分别为两多项式检测指针
           float c;									//c为结果多项式的存放指针
           while ( ia <= finish && ib <= B.finish )
	       if ( a[ia].exp == B.a[ib].exp)  {	//比较对应项的指数
	       c = a[ia].coef + B.a[ib].coef;		//相等,系数相加
	       if ( c ) {  Term t;
                     t.coef=c;
                     t.exp=a[ia].exp;
                     C.Append(t);
                      };		//和不为0,建立新项
	                 ia++;  ib++;
	                }
	        else if ( a[ia].exp > B.a[ib].exp ) {
	        C.Append(B.a[ib]);	//不等,建立新项
	        ib++;
	        }
	        else if ( a[ia].exp < B.a[ib].exp ) {
	        C.Append(a[ia]); 	//不等,建立新项
	        ia++;
	       }
            for ( ; ia<=finish; ia++ )							//加A(x)中剩余的项
            C.Append( a[ia]);
            for ( ; ib<=B.finish; ib++ )						//加B(x)中剩余的项
            C.Append(B.a[ib]);       
             };

 int main()
{   Polynomial  A,B,C;
    cout<<"输入第一个多项式系数" <<endl; 
    cin>>A;
    cout<<"输入第一个多项式为" <<endl;
    cout<<A;
    cout<<"输入第二个多项式系数" <<endl; 
    cin>>B;
    cout<<"输入第二个多项式为" <<endl;
    cout<<B; 
    A.Add(B,C);    
    cout<<"两个多项式求和为" <<endl;
    cout<<C; 
    system("PAUSE");
      return 0;
      }

⌨️ 快捷键说明

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