国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
用線性表實(shí)現(xiàn)多項(xiàng)式的加法和乘法

 

15.用線性表實(shí)現(xiàn)多項(xiàng)式的加法和乘法

/*用線性表實(shí)現(xiàn)多項(xiàng)式的加法和乘法*/

 

 

#include<iostream>

#include<cstdlib>

#include<Vector>

#include<cmath>

using namespace std;

 

/*使用模板創(chuàng)建一個(gè)因子的結(jié)構(gòu)*/

template<typename T>

struct Polynomia{

       T num;                         //num表示實(shí)系數(shù);

       char ch;                       //ch表示未知數(shù);

       int i;                         //i表示指數(shù);

};

 

 

/*對(duì)加號(hào)的重載*/

template<typename T>

Polynomia<T> operator+(Polynomia<T> const& lhs,Polynomia<T> const& rhs)

{

       Polynomia<T> P1;

       if(lhs.ch==rhs.ch){

          P1.num=lhs.num+rhs.num;

              P1.ch=lhs.ch;

              if(lhs.i==rhs.i||lhs.i!=0){

                     P1.i=lhs.i;

              }

              else{

                     P1.i=rhs.i;

              }

       }

       return P1;

}

 

 

/*對(duì)乘號(hào)的重載*/

template<typename T>

Polynomia<T> operator*(Polynomia<T> const& lhs,Polynomia<T> const& rhs)

{

       Polynomia<T> P2;

       if(lhs.num==0||rhs.num==0){

              P2.num=0;

              P2.ch=lhs.ch;

              P2.i=0;

       }

       else{

          P2.num=lhs.num*rhs.num;

          P2.ch=lhs.ch;

          P2.i=lhs.i+rhs.i;

       }

       return P2;

}

 

 

/*找出最大指數(shù)*/

template<typename T1>

T1 max(T1 a,T1 b)

{

       if(a>=b) return a;

       else  return b;

}

 

typedef Polynomia<double> PP;

 

 

int main()

{

       double x;                                   //x存儲(chǔ)實(shí)系數(shù);

       char ch2,ch1,ch0;                           //ch0存儲(chǔ)未知元,ch1存儲(chǔ)括號(hào),ch2存儲(chǔ)運(yùn)算符號(hào);

       int a,count=0,Max=0;                        //Max存儲(chǔ)最大指數(shù);

       Polynomia<double> P,P0;                     //P,P0存儲(chǔ)因子;

       std::vector<PP> vector1,vector2,vector3;    //vector1,vector2,vector3分別存儲(chǔ)參加運(yùn)算的多項(xiàng)式

                                                   //和得出的結(jié)果;

       vector1.reserve(1000);

       vector2.reserve(1000);

       vector3.reserve(1000);                      //給線性表分配空間;

 

       P.num=0;

       P.ch='y';

       P.i=0;

       P0.num=0;

       P0.ch='y';

       P0.i=0;                                      //結(jié)構(gòu)的初始化;                                    

   

       for(count=0;count<100;count++){              //向量的初始化;

              vector1.push_back(P);

              vector2.push_back(P);

              vector3.push_back(P);

       }

 

       cout<<"請(qǐng)輸入多項(xiàng)式(形如(5y2+2y1)*(4y4+3y1)="<<endl;

       cout<<"注意括號(hào)不可少!"<<endl<<endl;

 

       cin>>ch1;

       while(ch1!='(') {cin>>ch1;}                 //以括號(hào)區(qū)分兩個(gè)多項(xiàng)式,并存入向量;

       while(ch1!=')'){

              cin>>x>>ch0>>a;

              P.num=x;

              P.ch=ch0;

              P.i=a;

              vector1.operator[](a)=P;

              Max=max(Max,a);

              cin>>ch1;

       }

 

       cin>>ch2;                                      //第二個(gè)多項(xiàng)式;

       while(ch1!='(') {cin>>ch1;}

       while(ch1!=')'){  

              cin>>x>>ch0>>a;

              P.num=x;

              P.ch=ch0;

              P.i=a;           

              vector2.operator[](a)=P;     

              Max=max(Max,a);

              cin>>ch1;

       }

      

       if(ch2=='+'){                                //進(jìn)行加法運(yùn)算;

              for(count=0;count<=Max;count++){

                     vector3.operator[](count)=vector1.operator[](count)+vector2.operator[](count);

              }

       }

 

       if(ch2=='*'){                                  //進(jìn)行乘法運(yùn)算; 

              for(int count1=0;count1<=2*Max;count1++){

                     for(int count2=0;count2<=count1;count2++){

                            P0=P0+(vector1.operator[](count2)*vector2.operator[](count1-count2));

                     }

                     vector3.operator[](count1)=P0;

             

                     P0.num=0;

                     P0.ch='y';

                     P0.i=0;

              }

       }

 

    cout<<"結(jié)果為:";

       for(int m=0,n=0;m<=2*Max;m++){                 //控制輸出;         

              if((vector3.operator[](m)).num!=0){

                     n==0?cout<<" ":cout<<"+";

                     n++;

                     cout<<(vector3.operator[](m)).num<<(vector3.operator[](m)).ch<<(vector3.operator[](m)).i;

              }

       }

       cout<<endl<<endl<<endl;

 

 

       return 0;

}
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
1636 按照頻率將數(shù)組升序排序
C++ vector 類學(xué)習(xí)筆記 - C/C++ - 在路上
用C++11優(yōu)化矩陣運(yùn)算的空間和時(shí)間效率
LilianChen C#:運(yùn)算符重載
17 、unity3d Vector3
R語言有RStan的多維驗(yàn)證性因子分析(CFA)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服