資料結構 PTA一元多項式的乘法與加法運算

2021-07-24 06:04:38 字數 1622 閱讀 1363

設計函式分別求兩個一元多項式的乘積與和。

輸入格式:

輸入分2行,每行分別先給出多項式非零項的個數,再以指數遞降方式輸入乙個多項式非零項係數和指數(絕對值均為不超過1000的整數)。數字間以空格分隔。

輸出格式:

輸出分2行,分別以指數遞降方式輸出乘積多項式以及和多項式非零項的係數和指數。數字間以空格分隔,但結尾不能有多餘空格。零多項式應輸出0 0。

輸入樣例:

4 3 4 -5 2 6 1 -2 0

3 5 20 -7 4 3 1

輸出樣例:

15 24 -25 22 30 21 -10 20 -21 8 35 6 -33 5 14 4 -15 3 18 2 -6 1

5 20 -4 4 -5 2 9 1 -2 0

大致思路

定義係數和指數放在乙個多項式的結構體內,利用迴圈和選擇進行加法

①首先比較分為三種不同的情況,指數相等,指數較大,指數較小。大的直接放入加法結果的陣列中,小的將另乙個多項式放入加法結果的陣列中,相等則相加後再放入陣列中。

②其次檢查其中是否有係數為0的情況,有就直接刪除就好。

③還有幾種特殊的關於0的情況,直接看**應該就懂。

乘法稍微複雜一點

①利用兩層迴圈將所有的乘法結果放入陣列中

②按照指數從大到小的順序排列

③合併同類項,這裡有兩種情況,一是直接合併,合併之後後面的依次補上,另一種是合併同類項後係數為0,這要向前移動兩位(這個有點難想到)

= =剩下的就是為了全部正確,各種列印輸出了

#define n 30

#include

typedef structpolynomial,*poly;

polynomial poly1[n],poly2[n],mul[n],add[n];

int m,n;

int i,j;

int temp;

//輸入函式

void input()

//計算加法結果

void add()

}for(i=0

;i }

}if(add[0].coef==0)

else

}}//比較兩個數的大小

int compare(int k,int j)

void multiplication()

}int temp1,temp2;

for(j=0

;jfor(i=0

;iif(mul[i].expon

int flag=0

; for(i=0

;i }

else

}flag++;}}

temp-=flag;

if(mul[0].coef==0)

else

}else}}

}int main()

else

return 0

;}

我還是個新手有不對的地方多多指教~

PTA 資料結構 一元多項式求導

7 2 一元多項式求導 20 分 設計函式求一元多項式的導數。以指數遞降方式輸入多項式非零項係數和指數 絕對值均為不超過1000的整數 數字間以空格分隔。以與輸入相同的格式輸出導數多項式非零項的係數和指數。數字間以空格分隔,但結尾不能有多餘空格。3 4 5 2 6 1 2 012 3 10 1 6 ...

PTA 資料結構 一元多項式的乘法與加法運算

7 1 一元多項式的乘法與加法運算 20 分 設計函式分別求兩個一元多項式的乘積與和。輸入分2行,每行分別先給出多項式非零項的個數,再以指數遞降方式輸入乙個多項式非零項係數和指數 絕對值均為不超過1000的整數 數字間以空格分隔。輸出分2行,分別以指數遞降方式輸出乘積多項式以及和多項式非零項的係數和...

PTA 資料結構 一元多項式的乘法與加法運算

7 2 一元多項式的乘法與加法運算 20 分 設計函式分別求兩個一元多項式的乘積與和。輸入分2行,每行分別先給出多項式非零項的個數,再以指數遞降方式輸入乙個多項式非零項係數和指數 絕對值均為不超過1000的整數 數字間以空格分隔。輸出分2行,分別以指數遞降方式輸出乘積多項式以及和多項式非零項的係數和...