一元多項式問題

2022-11-19 12:39:04 字數 1926 閱讀 5269

本實驗的目的是進一步熟練掌握應用煉表處理實際問題的能力。

一、 問題描述:

一元多項式相加是通過鍵盤輸入兩個形如p0+p1*x^1+p2*x^2+pn*x^n的多項式,經過程式運算後在螢幕上輸出它們的相加和。

二、 資料結構設計:

分析任意一元多項式的描述方法可知,乙個一元多項式的每乙個子項都有「係數—指數」兩部分組成,所以可以將它抽象成乙個有「係數—指數對」構成的線性表,由於對多項式中係數為0的子項可以不記錄它的指數值,對於這樣的情況就不再付出儲存空間來存放它了。基於這樣的分析,可以採用乙個帶有頭結點的單鏈表來表示乙個一元多項式。具體資料型別定義為:

typedef struct nodepolynode;

三、 功能(函式)設計:

1、 輸入並建立多項式的功能模組

polynode * create()

scanf("%f,%d",&a,&b);

}return a;

}2、 多項式相加的功能模組

polynode *add(polynode *p,polynode *q)

else if(x->exp>y->exp)

else

if(c==null)

else

}if(x==null)

x=y;

while(x)

else

x->flag=1;

x=x->next;

}return c;

}3、 多項式顯示的功能模組

int print(polynode *w)

polynode *v;

v=w;

cout<<'(';

if(v->coef<0)cout<<'-';

cout

v=v->next;

while(v)

cout<<')';

}四、 介面設計:

注意提示使用者每一步操作輸入的格式和限制,指導使用者按照正確的格式輸入資料。

如圖:五、 編碼實現:

#include

#include<>

using namespace std;

typedef struct nodepolynode;

int print(polynode *w)

polynode *v;

v=w;

cout<<'(';

if(v->coef<0)cout<<'-';

cout

v=v->next;

while(v)

cout<<')';

}polynode *add(polynode *p,polynode *q)

else if(x->exp>y->exp)

else

if(c==null)

else

}if(x==null)

x=y;

while(x)

else

x->flag=1;

x=x->next;

}return c;

}polynode * create()

scanf("%f,%d",&a,&b);

}return a;

}int del(polynode *s)

polynode *c=s;

polynode *d=c->next;

while(d!=null)

delete c;

s=null;

}int main()

六、執行與測試:

測試以下資料,比較結果:

第乙個多項式測試結果,如上圖:

第二個多項式測試結果,如上圖:

第三個多項式測試結果,如上圖:

七、結論:

經測試,執行結果完全正確,程式沒有問題,而且也加強了對鍊錶的理解和應用。

多項式乘以多項式

學習目標 理解多項式乘以多項式的運算法則 重點 能夠按多項式乘法步驟進行簡單的乘法運算 難點 學習過程 一 創設情境 我們在上一節課裡學習了單項式與多項式的乘法,請口算下列練習中的 1 2 1 3x x y2 a b k 3 a b m n 比較 3 與 1 2 在形式上有何不同?如何進行多項式乘以...

實驗報告 一元稀疏多項式的加法

程式2 一元稀疏多項式加法運算 問題描述 設計乙個求解一元稀疏多項式加法運算的程式。基本要求 1 輸入並建立多項式。2 輸出多項式,輸出形式為整數序列 n,c1,e1,c2,e2,cn,en,其中n是多項式的項數,ci和ei分別是第i項的係數和指數,序列按指數降序排列。3 多項式a和b相加,建立多項...

一元稀疏多項式實驗報告 羅忠霖

集美大學計算機工程學院實驗報告 一.目的 本次試驗所涉及並要求掌握的知識點 本次實習的主要目的在於幫助學生熟練掌握線性表的基本操作在兩種儲存結構上的實現,其中以各種鍊錶的操作和應用為重點。二.實驗內容與設計思想 1 問題描述 設計乙個一元稀疏多項式簡單計算器 2 基本要求 一元稀疏多項式簡單計算器的...