輸入兩個多項式,輸出兩個多項式相加的每個項的次數的公升序形式。
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
/此時輸出3(因為被拿掉了乙個元素)
b.erase
(b.begin()
);cout
/輸出2
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 ...