一元多項式計算實驗報告(相加,相減,相乘)

2021-10-12 03:12:58 字數 2895 閱讀 2789

一元多項式計算

任務:能夠按照指數降序排列建立並輸出多項式;能夠完成兩個多項式的相加、相減和相乘,並將結果輸出;

在上交資料中請寫明:儲存結構、多項式相加的基本過程的演算法(可以使用程式流程圖)、源程式、測試資料和結果、演算法的時間複雜度、另外可以提出演算法的改進方法;

設有一元多項式am(x)和bn(x).

am(x)=a0+a1x1+a2x2+a3x3+… +amxm

bn(x)=b0+b1x1+b2x2+b3x3+… +bnxn

請實現求m(x)=am(x)+bn(x),m(x)=am(x)-bn(x)和m(x)=am(x)×bn(x)。

要求:首先判定多項式是否稀疏(個人判定以係數為0的項數大於項的最大次數加+1除2)

分別採用順序和動態儲存結構實現;

結果m(x)中無重複階項和無零係數項;

要求輸出結果的公升冪和降冪兩種排列情況

#include using namespace std;

struct a//定義雙向鍊錶,方便降冪輸出

;void paixu(struct a* head,struct a*p)//鍊錶冪從小到大排序,進來乙個排乙個

else

else if(p->b==p2->b)

else

}if(flag==0)

}}void jia1(struct a*head1,struct a*head2,struct a*head3)//鍊錶相加

p1=p1->next;

p2=p2->next;

}else if(p1->bb)

else

}if(p1==null)

}else

}}void jian1(struct a*head1,struct a*head2,struct a*head3)//鍊錶相減,只需在加的基礎上改+為-

p1=p1->next;

p2=p2->next;

}else if(p1->bb)

else

}if(p1==null)

}else

}}int chen1(struct a*head1,struct a*head2,struct a*head3,struct a*head4,struct a*head5)//鍊錶相乘,化為相加

//head4,head3作為容器,進行連加,好像可以不用

if(i==1)

else

p1=p1->next;

}return i;//判斷最後的容器是head3,還是head4;

}void xishu(int a,int max)//順序儲存判斷稀疏

if(min>(max+1)/2)

cout<<"表示式稀疏"while(p!=null)

if(i<=(max+1)/2)

cout<<"表示式稀疏"cout<<"順序:";

for(int i=0;i<=maxc;i++)//注意maxc包含在內

cout<<"輸入成功"head2->next=null;

head3->next=null;

head4->next=null;

head5->next=null;

cout<<"請輸入第乙個表示式的項個數"<>n1;

while(n1<=0)

cout<<"輸入成功"<>e>>d>>f;

p=(struct a*)malloc(sizeof(struct a));

if(e!=0)

}xishu1(head1);

cout<<"請輸入第二個表示式的項個數"<>n2;

while(n2<=0)

cout<<"輸入成功"<>e>>d>>f;

p=(struct a*)malloc(sizeof(struct a));

if(e!=0)

}xishu1(head2);

cout<<"輸入1表示相加,輸入2表示相減,輸入3表示相乘"<>sum1;

while(sum1!=1&&sum1!=2&&sum1!=3)

cout<<"輸入成功"p3=head3;

while(p)

if(flag==0)

cout<<"0";

coutp3=p3->prior;

}if(flag==0)

cout<<"0";

coutp3=head3;

while(p)

if(flag==0)

cout<<"0";

coutp3=p3->prior;

}if(flag==0)

cout<<"0";

coutelse

cout<<"順序:";

while(p)

if(flag==0)

cout<<"0";

coutp3=p3->prior;

}else

while(p3!=head4)

if(flag==0)

cout<<"0";

cout<>sum1;

while(sum1!=1&&sum1!=2&&sum1!=3&&sum1!=0)

if(sum1==0)

}}else

cout<<"輸入成功"<>e>>d>>f;

a[f]+=e;

if(maxa>n2;

while(n2<=0)

cout<<"輸入成功"<>e>>d>>f;

b[f]+=e;

if(maxb>sum1;

while(sum1!=1&&sum1!=2&&sum1!=3)

cout<<"輸入成功"<>sum1;

while(sum1!=1&&sum1!=2&&sum1!=3&&sum1!=0)

if(sum1==0)

}}}

實驗2 一元多項式相加

實驗內容 結合書上第41頁的例子,採用鏈式儲存結構,將兩個線性鍊錶表示的一元多項式相加,並輸出。此一元多項式遵循多項式相加運算規則 對於兩個一元多項式中存在指數相同的項時,其對應係數相加。合併後係數和為零時,刪除 和多項式 中此項 合併後係數和不為零時,則構成 和多項式 中的一項。對於兩個一元多項式...

2 一元多項式相加

成績 10開啟時間 2014年10月19日 sunday 00 00 折扣0.8 折扣時間 2014年11月2日 sunday 23 55 允許遲交 否關閉時間 2014年11月9日 sunday 23 55 編寫一元多項式加法運算程式。要求用線性鍊錶儲存一元多項式 參照課本 該程式有以下幾個功能 ...

一元多項式的相加

編寫一元多項式加法運算程式。要求用線性鍊錶儲存一元多項式 參照課本 該程式有以下幾個功能 1.多項式求和 輸入 輸入三個多項式,建立三個多項式鍊錶pa pb pc createpolyn polynomial p,int m 輸出 顯示三個輸入多項式pa pb pc 和多項式 pa pb 多項式 p...