C 高次多項式相加

2021-09-12 05:39:20 字數 3820 閱讀 8763

輸入兩個多項式,輸出兩個多項式相加的每個項的次數的公升序形式。

eg:input:(輸入輸出均無多餘的空格)

-5x^2+100+5x+90x^4

3x+4x^2+7-15x^3+10000000x^10000000

output:

107+8x-x^2-15x^3+90x^4+10000000x^10000000
#include

#include

#include

#include

#include

using namespace std;

struct cirlum

;vectorb1;

vectorb2;

int bg,ed;

int is_fu;

bool is_ok_c

(string a,

char tem)

}return true;

}bool judge

(cirlum tem1,cirlum tem2)

intmain

(int argc,

char

const

*ar**)

}// cout='+'

; st2+

='+'

;// cout(int i =

0; i < st1.

length()

;++i)

if(temst[0]

=='-')if

(temst[i]

<=

'9'&&temst[i]

>=

'0'&&is_k)

if(temst[i-1]

=='^'

)// cout(is_ok_c

(temst,ch)

) num =

stoi

(stc)

; cirlum temcirlum;

if(is_fu==1)

temcirlum.k = num;

temcirlum.a=0;

b1.push_back

(temcirlum)

; is_fu=0;

}else

if(temst[i]

==ch&&temst[i+1]

!='^'

) temcirlum.k = num;

temcirlum.a=1;

b1.push_back

(temcirlum)

; is_fu=0;

}else

if(i==temst.

length()

-1) temcirlum.a=anum;

b1.push_back

(temcirlum)

; is_fu=0;

}}}}

bg=0,ed=0;

// cout(int i =

0; i < st2.

length()

;++i)

if(temst[0]

=='-')if

(temst[i]

<=

'9'&&temst[i]

>=

'0'&&is_k)

if(temst[i-1]

=='^'

)// cout(is_ok_c

(temst,ch)

) num =

stoi

(stc)

; cirlum temcirlum;

if(is_fu==1)

temcirlum.k = num;

temcirlum.a=0;

b2.push_back

(temcirlum)

; is_fu=0;

}else

if(temst[i]

==ch&&temst[i+1]

!='^'

) temcirlum.k = num;

temcirlum.a=1;

b2.push_back

(temcirlum)

; is_fu=0;

}else

if(i==temst.

length()

-1) temcirlum.a=anum;

b2.push_back

(temcirlum)

; is_fu=0;

}}}}

// cout// // cout// // cout(int i =

0; i < b2.

size()

;++i)

sort

(b1.

begin()

,b1.

end(

),judge)

;for

(int i =

0; i < b1.

size()

;++i)

}// cout// // for (int i = 0; i < b1.size()-1; ++i)

// // for (int p = temi; p >=i+1 ; p--)

//

// }

// cout//

// }

for(

int i =

0; i < b1.

size()

-1;++i)

if(b1[i]

.k==0)

// b1.erase(b1.begin()+i+1);

}// cout// if

(b1[0]

.a==0)

else

if(b1[0]

.a==1)

else cout<.k<"^"<.a;for

(int i =

1; i < b1.

size()

;++i)

else cout<<

"+"<.k<}else

else cout<.k

else cout<<

"+"<.k<"^"<.a;}

else

else cout<.k<"^"<.a;}}}

return0;

}

1、高次多項式相加思路容易想到,將係數和指數通過結構體儲存,通過建立乙個結構體陣列或結構體向量去進行相加操作。(上邊**用的是向量,對元素進行操作相對容易)。

2、**並未考慮(並未實現多個相同次數的相加,即乙個式子中同時出現2x,5x,x……雖然不會那麼寫多項式,不過情況也要考慮,後續有空再寫)

1、用向量的erase()函式對向量元素進行操作時要注意該向量的size也會對應減小,這會引起迴圈體中的i會出現超過向量的size的情況,從而引起向量越界報錯。

eg:

vector<

int>b;

b.push_back(2

);b.push_back(3

);b.push_back(4

);b.push_back(5

);b.erase

(b.begin()

+2);

cout

b.erase

(b.begin()

);cout

2、對於有負號的項,注意更新每次是否為負數的布林值。

多項式相加

include include include typedef struct polyn pol 建立有序多項式 pol creatpolyn else if cnew expn clast expn else cnew pol malloc sizeof pol scanf d d cnew co...

多項式相加

include include typedef struct node 多項式資料型別的定義 polynode polynode createpoly 建立鍊錶 r next null return l void addpoly polynode pa,polynode pb 兩個多項式相加 els...

多項式相加

一.題目描述 輸入兩個多項式,按照指數遞增輸入 輸出相加和。二.題目分析 在書中第二章節中出現了多項式相加的演算法,使用鍊錶實現的,在此簡單使用結構體構造多項式的項。三.include define n 10 typedef struct item int m,n,k 0 item a n b n ...