分析傳統的做法:
(1)多項式用list容器表示,容器內的每乙個元素代表多項式中的每一項。設定多項式p1,p2,並使結果p3結果為空。
(2)利用sort系統函式,使多項式p1,p2中每一項按係數公升序排列。
(3)利用iterator技術遍歷p1,p2。當p1,p2沒有檢測完各自的鍊錶時,比較當前結點的指數域。
(4)指數相等,對應項係數相加。若相加結果不為0,則結果加入p3,否則不加入p3。p1,p2各自的iterator迭代指標都進1。
(5)指數不等,小係數者加入p3,相應的迭代器指標進1。
(6)當p1,p2的iterator迭代指標已經有乙個檢測完畢,把另乙個鍊錶的剩餘部分加入p3即可,採用函式是系統函式splice。
(1)利用sort系統函式,使多項式p1,p2中每一項按係數公升序排列。
(2)利用merge函式將p1和p2合併,合併後只剩p1。
(3)利用unique函式將p1去掉重複的多項式(需要過載等於號以指數為基準),去除的同時需要將兩指數相等的進行相加,具體看**實現。
(4)然後利用迭代器遍歷p1,將每乙個多項式push_back到p3中,這就實現了多項式的相加。
標頭檔案addpolynomial.h
#ifndef addpolynomial_h_included
#define addpolynomial_h_included
#include #include #include using namespace std;
class term
int getcoef()
int getexp()
bool operator<(term& t)
bool operator==(term& t) //過載等於號支援去重
};typedef listlistterm;
ostream &operator<<(ostream& os,term& t)
class polynomial
polynomial addpolynomial(polynomial& obj)
return result;
}void show()
cout << *it << "+";
it++;}}
};#endif // addpolynomial_h_included
主函式main.cpp
#include "addpolynomial.h"
int main()
這樣就是用list容器的函式簡便的完成了多項式的相加。 STL演算法實現 多項式加法
一 include include using namespace std struct point bool cmp const point a,const point b 公升序,降序只需要改變大於小於符號 for int i 0 i aa.x aa.z s2.push back aa s1.m...
多項式加法
題目內容 乙個多項式可以表達為x的各次冪與係數乘積的和,比如 現在,你的程式要讀入兩個多項式,然後輸出這兩個多項式的和,也就是把對應的冪上的係數相加然後輸出。程式要處理的冪最大為100。輸入格式 總共要輸入兩個多項式,每個多項式的輸入格式如下 每行輸入兩個數字,第乙個表示冪次,第二個表示該冪次的係數...
多項式加法
題目內容 乙個多項式可以表達為x的各次冪與係數乘積的和,比如 2x6 3x5 12x3 6x 20 現在,你的程式要讀入兩個多項式,然後輸出這兩個多項式的和,也就是把對應的冪上的係數相加然後輸出。程式要處理的冪最大為100。輸入格式 總共要輸入兩個多項式,每個多項式的輸入格式如下 每行輸入兩個數字,...