1、11/6/20211實系數(shù)一員項式問題 (poly問題)11/6/20212問題描述 n 設計表示一元多項式設計表示一元多項式 的模板類,它支持一元多的模板類,它支持一元多項式的下列運算:項式的下列運算:(1)poly()(1)poly():構造函數(shù),初始化一個:構造函數(shù),初始化一個0 0階多項式。階多項式。(2)degree()(2)degree():多項式的階數(shù)。:多項式的階數(shù)。(3)input()(3)input():輸入一個多項式。:輸入一個多項式。(4)output()(4)output():輸出多項式。:輸出多項式。(5)add(b)(5)add(b):多項式加法。:多項式加法。(
2、6)sub(b)(6)sub(b):多項式減法。:多項式減法。(7)mul(b)(7)mul(b):多項式乘法。:多項式乘法。(8)val(x)(8)val(x):多項式在:多項式在x x處的值。處的值。(8)dev(x)(8)dev(x):多項式導數(shù)。:多項式導數(shù)。(8)indev(x)(8)indev(x):多項式不定積分。(常數(shù)項:多項式不定積分。(常數(shù)項c=0c=0)其中其中(3)(3)(8)(8)應重載運算符應重載運算符、+ +、? ?、和和() ()。11/6/20213編程任務 給定k個一元多項式,以及(k-1)個運算符(當然了,這些運算符號只有:+,-,*),然后計算: (1)
3、g(x):把k個多項式按照符號依次計算出最后的多項式; (2)h(x):對求得的g(x)求導,以及求h(xo)的值; (3)q(x):對求得的g(x)求不定積分以及求q(xo)的值.11/6/20214數(shù)據(jù)輸入,輸出展示input.txt output.txt 3 9x4+18x3+12x2+21x 3 36x3+54x2+24x+21 3 3 62.616 4 1 1.8x5+4.5x4+4x3+10.5x2 6 0 1.09382 2 6 2 1 0 13 1+ *d 0.6i 0.30 011/6/20215輸入的數(shù)據(jù)解釋 在輸入欄中,第一個3(即是k)表示接下來有3個數(shù)據(jù)塊,每一個數(shù)據(jù)
4、塊表示一個多項式. 接下來第一個數(shù)據(jù)塊的3,表示會有3組輸入, 每組2個整數(shù)a,b,表示該多項式中的axb.(在此,我們應該可以知道a設置為double型,而因為系數(shù)為非負數(shù),因此b設置int型.) 3組數(shù)據(jù)塊輸完了之后,會有2(即是k-1)個符號,把前面所得的三個多項式按照符號順序依次計算出來,從而得到最后的g(x). 下來的兩行表示:當碰到d時,就求導數(shù)h(x),而面的值即為xo,求h(xo);當碰到i時,就求不定積分q(x),同理求q(xo) 最后的0 0,表示于0 0結束程序輸入.11/6/20216輸出數(shù)據(jù)解釋 輸出有5行.依次表示為:g(x),h(x),h(xo),q(x),q(x
5、o)11/6/20217解題思路 這題用類去做.基本定義書上寫得很清楚.但是要注意重載運算符(+,-,*,=).它們用到了operator這一關鍵字. 解答過程中,其實思路很簡單: 多項式加跟減,主要是首先要讓它們當中冪相同的項相加減.如果遇到一個多項式中少了一些冪次項的話,可以假設該項存在.只是其前面的系數(shù)為0,再進行相加減.結果存在一個類對象中. 多項式相乘中,主要是用一個多項式的每一項依次去乘另一個多項式的每一項.結果存在另一個類對象中. 至于求導跟求不定積分.完全照公式把相應的系數(shù)跟冪該一下,就可以了.11/6/20218簡單的operator展示 fc&fc:operator
6、 =(fc&x) if(sd!=0) delete sd; 釋放指針sd=new notex.n; 給sd分配內(nèi)存for(int i=0;ix.n;i+) n為項的個數(shù)sdi.a=x.sdi.a;sdi.b=x.sdi.b;n=x.n;return *this; 11/6/20219例子:多項式*的程序簡介 fc fc:operator *(fc&x) int k=0; fc num,a; 定義兩個fc對象 a.sd=new note100; for(int i=0;in;i+) k=0; for(int j=0;jx.n;j+)11/6/202110例子:多項式*的程序簡介 a.sdk.a=sdi.a*x.sdj.a; 系數(shù)相乘 a.sdk.b=sdi.b+x.sdj.b; 冪相加 k+; a.n=k; 相乘后的項的個數(shù) num=num+a; return num; 最后得到的多項式 11/6/202111例子:多項式求導 fc&fc:indev() for(int i=0;in;i+) sdi.b=sdi.b+1; 冪加1 sdi.a=sdi.a/sdi.b; 系數(shù)做相應變化 return *this; 11/6/202
評論
0/150
提交評論