版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 課程設(shè)計報告</b></p><p> 設(shè)計名稱: 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計 </p><p> 設(shè)計題目: 兩個高次多項式的加法和乘法 </p><p> 學(xué)生學(xué)號: </p><p&g
2、t; 專業(yè)班級: 軟件工程1班 </p><p> 軟件學(xué)院課程設(shè)計任務(wù)書</p><p><b> 摘 要</b></p><p> 摘要:本課程設(shè)計主要解決任意兩個高次多項式的乘法運算。所設(shè)計的數(shù)據(jù)結(jié)構(gòu)應(yīng)盡可能節(jié)省存儲空間,程序的運行時間應(yīng)盡可能少。從題目看出所設(shè)計的程序應(yīng)能達(dá)到的功能,設(shè)
3、計好的程序要滿足以上兩點。在數(shù)據(jù)輸入方面可以根據(jù)一元高次多項式的特征,從左到右開始,按每一項指數(shù)、系數(shù)的順序輸入。這里要留意一個問題,因為要相乘的多項式項數(shù)是未知的,所以選擇什么樣的存儲方式在本課程設(shè)計中尤為重要,這也是本程序好壞的一個評定。程序通過調(diào)試運行,初步實現(xiàn)了設(shè)計目標(biāo),并且經(jīng)過適當(dāng)完善后,將可以應(yīng)用在商業(yè)中解決實際問題。</p><p> 關(guān)鍵詞:高次多項式;加法;乘法;時間復(fù)雜度;空間復(fù)雜度<
4、/p><p><b> 目 錄</b></p><p><b> 目 錄I</b></p><p> 第一章 課題背景2</p><p><b> 1.1 緒論2</b></p><p> 1.2 主要內(nèi)容2</p><
5、;p> 第二章 設(shè)計簡介及設(shè)計方案論述3</p><p> 2.1 系統(tǒng)分析3</p><p> 2.1.1 功能需求3</p><p> 2.1.2 數(shù)據(jù)需求3</p><p> 2.1.3 系統(tǒng)需求3</p><p> 2.2 總體設(shè)計3</p><p>
6、2.2.1 系統(tǒng)設(shè)計方案3</p><p> 2.2.2 功能模塊設(shè)計4</p><p> 第三章 詳細(xì)設(shè)計5</p><p> 3.1 主要流程圖5</p><p> 3.2 鏈表模塊6</p><p> 3.3 加法模塊8</p><p> 3.4 乘法模塊10&
7、lt;/p><p> 第四章 設(shè)計結(jié)果及分析12</p><p> 4.1 調(diào)試與測試12</p><p> 4.1.1 調(diào)試12</p><p> 4.1.2 測試12</p><p> 4.1.3 運行界面13</p><p> 4.2 結(jié)果分析13</p>
8、<p><b> 總結(jié)14</b></p><p><b> 參考文獻(xiàn)15</b></p><p><b> 附錄16</b></p><p><b> 第一章 課題背景</b></p><p><b> 1.1
9、緒論</b></p><p> 隨著科技的進(jìn)步,社會的不斷發(fā)展,計算器已普遍應(yīng)用于各行各業(yè),為了幫助人們提高工作效率,節(jié)約運算時間,設(shè)計一個多功能的計算器是很有必要的,在此設(shè)計一個高次多項式計算器可以很方便的對多項式相加、相減、相乘,對提高人們的運算效率很有幫助。</p><p> 這樣一個程序需要用到C++多方面的知識,要實現(xiàn)多項式的建立和輸入輸出等功能,必須要熟練的掌握
10、C++,在此尤其是鏈表的靈活運用和結(jié)點特點。</p><p><b> 1.2 主要內(nèi)容</b></p><p> 用C++語言實現(xiàn)多項式的輸入輸出和多項式的加減乘等運算,其中主要用到鏈表和結(jié)點的相關(guān)知識,具體功能如下:</p><p> 1)輸入并建立多項式;</p><p><b> 2)輸出多項式
11、;</b></p><p> 3)兩個多項式相加,輸出和多項式;</p><p> 4)兩個多項式相減,輸出差多項式。</p><p> 第二章 設(shè)計簡介及設(shè)計方案論述</p><p><b> 2.1 系統(tǒng)分析</b></p><p> 2.1.1 功能需求</p&
12、gt;<p> 實現(xiàn)任意兩個高次多項式的加法和乘法</p><p> 2.1.2 數(shù)據(jù)需求</p><p> 在輸入過程中,首先要給定輸入的數(shù)據(jù),數(shù)據(jù)只能是數(shù)字,不能是字母或其他,不能連續(xù)輸入數(shù)據(jù),必須要求以空格分開要輸入的數(shù)據(jù)。</p><p> 2.1.3 系統(tǒng)需求</p><p> 系統(tǒng)必須安全可靠,不會出現(xiàn)無故
13、死機(jī)狀態(tài),運算速度要快。</p><p><b> 2.2 總體設(shè)計</b></p><p> 2.2.1 系統(tǒng)設(shè)計方案</p><p> 用戶輸入高次多項式系數(shù)和指數(shù),用單鏈表儲存你輸入的數(shù)據(jù),輸出兩個多項式相加和相乘之后的結(jié)果。</p><p> (1) 數(shù)據(jù)結(jié)構(gòu)的選擇</p><p>
14、; 本程序選擇的數(shù)據(jù)結(jié)構(gòu)是單鏈表,原因如下:</p><p> 當(dāng)需要插入數(shù)據(jù)元素時,臨時動態(tài)地為其申請一個存儲空間,而不是將結(jié)點放在一個定義的數(shù)組中,刪除數(shù)據(jù)元素時,可以釋放該數(shù)據(jù)元素所占用的空間,即可以根據(jù)表的實際需要臨時動態(tài)的分配存儲空間以存儲表中的數(shù)據(jù)元素。</p><p> 單鏈表是有限個具有相同數(shù)據(jù)類型的數(shù)據(jù)元素組成的鏈表且該鏈表的每一個結(jié)點只有一個指針域。帶頭結(jié)點的單鏈
15、表是在單鏈表的第一個結(jié)點之前加一個同類型的結(jié)點,目的是為了使鏈表有一致的描述。</p><p> 本程序解決的是兩多項式相乘的問題,多項式的項數(shù)本身就是不確定的,而且相乘后的多項式可能含有指數(shù)相同的問題,這時就需要合并,合并后其中的一項就沒有用了需要刪除,不然就浪費內(nèi)存空間?;谝陨蠋c所以采用了鏈表。</p><p> 鏈表具有動態(tài)生成,靈活添加或刪除結(jié)點的特點,盡可能節(jié)省存儲空間。
16、</p><p> (2) 文件保存方式</p><p> 運用帶頭節(jié)點的單鏈表儲存多項式。</p><p> (3) 抽象數(shù)據(jù)類型定義</p><p> 主要定義多項式的系數(shù)和指數(shù),系數(shù)項和指數(shù)項均用整型定義。</p><p><b> (4) 存儲結(jié)構(gòu)</b></p>
17、<p> 采用鏈?zhǔn)浇Y(jié)構(gòu),建立鏈表儲存輸入的多項式</p><p><b> (5) 算法設(shè)計</b></p><p> 先將兩個已知的多項式的指數(shù)和系數(shù)存放在指定鏈表中在執(zhí)行乘法運算。乘法運算的過程是將A 式中的第一項與B 式的每一項相乘,在將A 式的第二項與B 式的每一項相乘,依次下去直到A 式的所有項與B 式乘完為止。將相乘后所得的指數(shù)、系數(shù)存在預(yù)
18、先建好的C 鏈表中。</p><p> C 鏈表中如果有指數(shù)相同的項就需要合并,合并時將結(jié)果放在前一個項中,將后一項刪除。首先定義3個指針,x、y、z,x、y 指向首元素結(jié)點z 指向第二個結(jié)點,用z 結(jié)點中指數(shù)項與x 結(jié)點的指數(shù)項比較,如果不同指針z 向后移,若相同則將z 結(jié)點的系數(shù)加到x 上去然后將z 所在結(jié)點空間釋放,并且指針z 后移。直到指針z 指向空后,將指針x 后移一項,并令z 指向x 的下一項,然后
19、按上述步驟依次執(zhí)行,直到x 指向空結(jié)束。這里指針y 是z 的前驅(qū)結(jié)點他的作用是合并后結(jié)點空間釋放結(jié)點空間將此結(jié)點的前后兩項鏈接起來。本程序核心部分全部是運用while 循環(huán)語句實現(xiàn)的。</p><p> 2.2.2 功能模塊設(shè)計</p><p> 圖 2-1 功能模塊</p><p><b> 第三章 詳細(xì)設(shè)計</b></p>
20、;<p> 多項式的建立主要需要建立新鏈表,并分配給這個新鏈表一定量的存儲空間,分配的存儲空間內(nèi)進(jìn)行運算;多項式加減乘等運算主要運用了鏈表的建立,鏈表存儲空間分配,鏈表的查找,插入與連接進(jìn)行計算。</p><p><b> 3.1 主要流程圖</b></p><p> 此階段是程序構(gòu)建的思路,是本程序的結(jié)構(gòu)圖,同時也體現(xiàn)出本程序?qū)⒁_(dá)到的功能,如圖
21、 3-1所示:</p><p><b> 輸入任意兩個高次</b></p><p> 多項式的系數(shù)、指數(shù)值</p><p><b> 將輸入值分別儲存</b></p><p><b> 在兩個動態(tài)鏈表中</b></p><p><b>
22、 將相乘和相加的</b></p><p><b> 結(jié)果存入C鏈表</b></p><p> 將存放相乘多項式的各項</p><p><b> 系數(shù)指數(shù)的鏈表置空</b></p><p><b> 若有指數(shù)相同</b></p><p&g
23、t;<b> 的項合并</b></p><p><b> 輸出兩個要進(jìn)行</b></p><p><b> 運算的多項式</b></p><p><b> 輸出結(jié)果</b></p><p> 圖 3-1 主流程圖</p><p
24、><b> 3.2 鏈表模塊</b></p><p> 此階段是程序中鏈表的主要流程,如圖 3-2所示:</p><p><b> Start</b></p><p> list<term> Poly_add(list<term>&poly_list_first,</p&
25、gt;<p> list<term>&poly_list_second)</p><p> list<term>::iterator iter_first = poly_list_first.begin();</p><p> list<term>::iterator iter_second = poly_list_secon
26、d.begin();</p><p> iter_first!=poly_list_first.end() && </p><p> iter_second != poly_list_second.end()</p><p> term t_first = (term)*iter_first;</p><p> ter
27、m t_second = (term)*iter_second;</p><p> t_first.exp>t_second.exp</p><p> poly_list_result.push_back(t_first);</p><p> iter_first++; t_second.exp></p><
28、p> t_first.exp</p><p> poly_list_result.push_back</p><p> (t_second);iter_second++;</p><p> t_temp.coef=t_first.coef</p><p> +t_second.coef;t_temp.</p>&
29、lt;p> exp=t_first.coef;</p><p><b> End</b></p><p> 圖 3-2 鏈表結(jié)構(gòu)圖</p><p><b> 主要代碼如下:</b></p><p> list<term> Poly_add(list<term>
30、&poly_list_first,list<term>&poly_list_second)</p><p><b> {</b></p><p> list<term> poly_list_result;//用以存儲運算結(jié)果</p><p> list<term>::iterator
31、iter_first = poly_list_first.begin();</p><p> list<term>::iterator iter_second = poly_list_second.begin();</p><p> /*該while循環(huán)針對兩個鏈表迭代器都沒有指到結(jié)尾的情形*/ </p><p> while (iter_firs
32、t != poly_list_first.end() && iter_second != poly_list_second.end())</p><p><b> {</b></p><p> term t_temp;</p><p> term t_first = (term)*iter_first;</p>
33、<p> term t_second = (term)*iter_second;</p><p> if (t_first.exp>t_second.exp)</p><p><b> {</b></p><p> poly_list_result.push_back(t_first);</p><
34、;p> iter_first++;</p><p><b> }</b></p><p> else if (t_second.exp>t_first.exp) {</p><p> poly_list_result.push_back(t_second);</p><p> iter_second
35、++;</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> t_temp.coef = t_first.coef + t_second.coef;</p><p&g
36、t; t_temp.exp = t_first.coef;</p><p> poly_list_result.push_back(t_temp);</p><p> iter_first++;</p><p> iter_second++;</p><p><b> }</b></p><
37、p><b> }</b></p><p> //該for循環(huán)針對第一個多項式的迭代器沒有指到結(jié)尾 </p><p> for (;iter_first != poly_list_first.end();iter_first++)</p><p><b> {</b></p><p>
38、 poly_list_result.push_back(*iter_first);</p><p><b> }</b></p><p> //該for循環(huán)針對第二個多項式的迭代器沒有指到結(jié)尾 </p><p> for (; iter_second != poly_list_second.end(); iter_second++)<
39、;/p><p><b> {</b></p><p> poly_list_result.push_back(*iter_second);</p><p><b> }</b></p><p> return poly_list_result;</p><p><b
40、> }</b></p><p><b> 3.3 加法模塊</b></p><p> 此階段是程序中加法模塊的主要流程,如圖 3-3所示:</p><p><b> Start</b></p><p> list<term>::iterator iter_fi
41、rst = m_poly_list_first.begin();</p><p> list<term>::iterator iter_second = m_poly_list_second.begin();</p><p> iter_first != m_poly_list_</p><p> first.end()&&iter
42、_second!=m_poly_list_</p><p> second.end()</p><p> term t_first = (term)*iter_first;</p><p> term t_second = (term)*iter_second;</p><p> t_first.exp>t_second.exp
43、</p><p> m_poly_list_result.push_back(t_first);</p><p> iter_first++; t_second.exp>t_first.exp</p><p> m_poly_list_result.push_back</p><p> (t_secon
44、d);iter_second++;</p><p> t_temp.coef=t_first.coef+t_second.coef; t_temp.exp=t_first.exp;</p><p> m_poly_list_result.push_back(t_temp);</p>
45、<p> iter_first++;iter_second++;</p><p> iter_first!=m_poly_list_first.end()</p><p> m_poly_list_result.push_back(*iter_first);</p><p> iter_first++;</p><p>
46、 iter_second!=m_poly_list_second.end()</p><p> m_poly_list_result.push_back(*iter_second);</p><p> iter_second++;</p><p><b> End</b></p><p> 圖 3-3 加法模塊結(jié)
47、構(gòu)</p><p><b> 主要代碼如下:</b></p><p> void Poly_add()</p><p><b> {</b></p><p> list<term>::iterator iter_first = m_poly_list_first.begin();
48、</p><p> list<term>::iterator iter_second = m_poly_list_second.begin();</p><p> while (iter_first != m_poly_list_first.end() && iter_second != m_poly_list_second.end())</p>
49、<p><b> {</b></p><p> term t_temp;</p><p> term t_first = (term)*iter_first;</p><p> term t_second = (term)*iter_second;</p><p> if(t_first.exp&
50、gt;t_second.exp)</p><p><b> {</b></p><p> m_poly_list_result.push_back(t_first);</p><p> iter_first++;</p><p><b> }</b></p><p>
51、 else if(t_second.exp>t_first.exp)</p><p><b> {</b></p><p> m_poly_list_result.push_back(t_second);</p><p> iter_second++;</p><p><b> }</b&
52、gt;</p><p><b> else</b></p><p><b> {</b></p><p> t_temp.coef = t_first.coef + t_second.coef;</p><p> t_temp.exp = t_first.exp;</p>&l
53、t;p> m_poly_list_result.push_back(t_temp);</p><p> iter_first++;</p><p> iter_second++;</p><p><b> }</b></p><p><b> }</b></p><
54、;p> for(;iter_first != m_poly_list_first.end(); iter_first++)</p><p><b> {</b></p><p> m_poly_list_result.push_back(*iter_first);</p><p><b> }</b><
55、/p><p> for (;iter_second != m_poly_list_second.end(); iter_second++)</p><p><b> {</b></p><p> m_poly_list_result.push_back(*iter_second);</p><p><b>
56、 }</b></p><p><b> }</b></p><p><b> 3.4 乘法模塊</b></p><p> 此階段是程序中乘法模塊的主要流程,如圖 3-4所示:</p><p><b> Start</b></p><p&g
57、t; list<term> poly_list_result;</p><p> list<term>::iterator iter_first = m_poly_list_first.begin();</p><p> iter_first != m_poly_list_first.end()</p><p> list<te
58、rm> poly_list_temp;</p><p> list<term>::iterator iter_second=m_poly_list_second.begin();</p><p> iter_first++</p><p> iter_second != m_poly_list_second.end();</p>
59、<p> term t_first = (term)*iter_first;</p><p> term t_second = (term)*iter_second;</p><p> t_temp.coef = t_first.coef*t_second.coef;</p><p> t_temp.exp = t_first.exp + t_s
60、econd.exp;</p><p> poly_list_temp.push_back(t_temp);</p><p> poly_list_result = Poly_add(poly_list_temp, poly_list_result);</p><p> m_poly_list_result = poly_list_result;</p&g
61、t;<p><b> End</b></p><p> 圖3-4 乘法模塊結(jié)構(gòu)</p><p><b> 主要代碼如下:</b></p><p> void Poly_multi()</p><p><b> {</b></p><p
62、> list<term> poly_list_result;</p><p> list<term>::iterator iter_first = m_poly_list_first.begin();</p><p> for (; iter_first != m_poly_list_first.end(); iter_first++)</p>
63、;<p><b> {</b></p><p> list<term> poly_list_temp; //用以存儲多項式的中間運算結(jié)果 </p><p> list<term>::iterator iter_second=m_poly_list_second.begin();</p><p
64、> for (;iter_second != m_poly_list_second.end();iter_second++)</p><p><b> {</b></p><p> term t_temp; //用以存儲項的中間運算結(jié)果 </p><p> term t_first = (ter
65、m)*iter_first;</p><p> term t_second = (term)*iter_second;//此處實現(xiàn)多項式項的相乘 </p><p> t_temp.coef = t_first.coef*t_second.coef; //系數(shù)相乘 </p><p> t_temp.exp = t_first.exp + t_seco
66、nd.exp; //指數(shù)相加 </p><p> poly_list_temp.push_back(t_temp);</p><p><b> }</b></p><p> //此處調(diào)用私有成員函數(shù)Poly_add()</p><p> poly_list_result = Poly_add(pol
67、y_list_temp, poly_list_result);</p><p><b> }</b></p><p> //將運算結(jié)果賦值給私有數(shù)據(jù)成員,用以輸出 </p><p> m_poly_list_result = poly_list_result;</p><p><b> }</b&
68、gt;</p><p> 第四章 設(shè)計結(jié)果及分析</p><p><b> 4.1 調(diào)試與測試</b></p><p><b> 4.1.1 調(diào)試</b></p><p> 調(diào)試過程主要是運行編制好的程序,然后遇到錯誤后根據(jù)系統(tǒng)的提示,找到相關(guān)的問題所在。本系統(tǒng)調(diào)試過程中遇到的主要問題、原
69、因和解決方法如下面介紹。</p><p> Error C2065:’coef’:undeclared identifier</p><p> Coef沒有明確被定義</p><p> 回到程序中查找并改正,發(fā)現(xiàn)調(diào)用的變量沒有在同一類中</p><p><b> 4.1.2 測試</b></p>&
70、lt;p> 軟件測試是軟件生存期中的一個重要階段,是軟件質(zhì)量保證的關(guān)鍵步驟從用戶的角度來看,普遍希望通過軟件測試暴露軟件中隱藏的錯誤和缺陷,所以軟件測試應(yīng)該是“為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程”?;蛘哒f,軟件測試應(yīng)該根據(jù)軟件開發(fā)各階段的規(guī)格說明和程序的內(nèi)部結(jié)構(gòu)而精心設(shè)計一批測試用例(即輸入數(shù)據(jù)及其預(yù)期的輸出結(jié)果),并利用這些測試用例去運行程序,以發(fā)現(xiàn)程序錯誤或缺陷。過度測試則會浪費許多寶貴的資源。到測試后期,即使找到了錯誤,然而付出
71、了過高的代價。</p><p><b> 測試數(shù)據(jù)過程如下:</b></p><p> 第一個多項式的項數(shù):3</p><p><b> 第1項</b></p><p><b> 系數(shù):2</b></p><p><b> 指數(shù):9&
72、lt;/b></p><p><b> 第2項</b></p><p><b> 系數(shù):8</b></p><p><b> 指數(shù):4</b></p><p><b> 第3項</b></p><p><b>
73、; 系數(shù):6 </b></p><p><b> 指數(shù):6</b></p><p> 第二個多項式的項數(shù):2</p><p><b> 第1項</b></p><p><b> 系數(shù):4</b></p><p><b>
74、 指數(shù):6</b></p><p><b> 第2項</b></p><p><b> 系數(shù):4</b></p><p><b> 指數(shù):1</b></p><p><b> 運行結(jié)果:</b></p><p>
75、 第一個多項式為:2x^9+8x^4+6x^6</p><p> 第二個多項式為:4x^6+4x^1</p><p> 多項式加法的運算結(jié)果:2x^9+4x^6+8x^4+6x^6+4x^1</p><p> 多項式乘法的運算結(jié)果:8x^15+40x^32+24x^12+24x^7+32x^5</p><p> 4.1.3 運行界面
76、</p><p> 圖 4-1 運行界面</p><p><b> 4.2 結(jié)果分析</b></p><p> 經(jīng)過一段時間的設(shè)計,我的程序大體完成,任務(wù)書中所要求實現(xiàn)多項式的輸入輸出、多項式的加法、多項式的乘法都實現(xiàn)了,而但程序還存在一些缺點,例如,系數(shù)輸入負(fù)數(shù)會加減號重復(fù),無法輸入字母計算,無法進(jìn)行多項連續(xù)計算,以后還需進(jìn)一步改進(jìn)。&
77、lt;/p><p><b> 總結(jié)</b></p><p> 數(shù)據(jù)結(jié)構(gòu)體現(xiàn)的是解決問題的一種思想,怎樣把這種思想體現(xiàn)出來,需要我們對每個方面的系統(tǒng)了解。并發(fā)現(xiàn)了許多自己的不足,平時沒掌握的的知識在實踐中暴露,經(jīng)過不斷的思考,查閱書籍和上網(wǎng)查資料及上機(jī)運行,解決了大部分的問題,還有一些小問題。但是,我相信在今后的學(xué)習(xí)中,一定能把它解決好。當(dāng)今計算機(jī)應(yīng)用在生活中可以說是無
78、處不在。因此作為二十一世紀(jì)的大學(xué)生來說掌握程序開發(fā)技術(shù)是十分重要的,而C++語言又是最常見,功能最強(qiáng)大的一種高級語言,因此做好C++語言版數(shù)據(jù)結(jié)構(gòu)課程設(shè)計是十分必要的。我不僅鞏固了數(shù)據(jù)結(jié)構(gòu)程序設(shè)計的內(nèi)容,掌握設(shè)計的基本方法,強(qiáng)化了上機(jī)動手能力,還進(jìn)一步掌握了以下知識:數(shù)據(jù)類型,鏈表,結(jié)點,分支控制,循環(huán)控制,結(jié)構(gòu)體及數(shù)組,指針,文件操作,編譯預(yù)處理等;通過課程設(shè)計,掌握了程序的局部測試,調(diào)試方法,建立程序系統(tǒng)調(diào)試,測試的基本概念和思想,
79、學(xué)會較大程序的系統(tǒng)測試和調(diào)試方法。當(dāng)我選擇這個多項式計算器系統(tǒng)時,首先系統(tǒng)分析主要思路和框架哦,與同學(xué)討論,聯(lián)系所學(xué)的知識。我知道書上和老師講的有限,所以上網(wǎng)搜也是一種利用資源的表現(xiàn)。在編程中,特別是結(jié)構(gòu)體,指針的部分,幾乎是一片空白。不過經(jīng)過幾天的努</p><p> 編譯過程中,算法至關(guān)重要,多項式加法:系數(shù)相同時指數(shù)相加,不同時兩項做加法;多項式乘法:指數(shù)相乘,系數(shù)相加,當(dāng)然在設(shè)計過程中還要注意一些特殊值
80、,如0,1等。</p><p> 通過這次課程設(shè)計,我感覺到要自己動手真正做出一個程序并不很容易,但只要用心去做,總會有收獲,特別是當(dāng)我遇到問題,問老師,問同學(xué),想盡辦法去解決,最后終于找到方法時,心里的那份喜悅之情真是難以形容.編寫程序中遇到問題再所難免,應(yīng)耐心探究其中的原因,從出現(xiàn)問題的地方起,并聯(lián)系前后程序,仔細(xì)推敲,逐個排查.直到最終搞清為止。</p><p> 在課程設(shè)計過程
81、中,收獲知識,提高能力的同時,我也學(xué)到了很多的人生哲理,懂得了怎么去制定計劃,怎么去實現(xiàn)這個計劃,并掌握了在執(zhí)行的過程中怎樣去克服心理上的不良情緒。因此在以后的生活和學(xué)習(xí)的過程中,我一定把課程設(shè)計的精神帶到生活中,使生活變得更好。</p><p><b> 參考文獻(xiàn)</b></p><p> [1] 譚浩強(qiáng). C語言程序設(shè)計(第三版)[M]. 清華大學(xué)出版社, 2
82、007.</p><p> [2] 姜敏芝,余健. C語言程序設(shè)計案例精編[M]. 清華大學(xué)出版社, 2008.</p><p> [3] 李健學(xué),余健. 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計案例精編[M]. 2007.</p><p> [4] 唐國民,王國均. 數(shù)據(jù)結(jié)構(gòu)(C語言版)[M]. 北京:清華大學(xué)出版社.</p><p> [5] 王路明.
83、C語言程序設(shè)計教程[M]. 北京:北京郵電大學(xué)出版社,2005年5月.</p><p> [6] 譚浩強(qiáng). C++程序設(shè)計[M]. 北京:清華大學(xué)出版社.2004.</p><p> [7] 范策. 算法與數(shù)據(jù)結(jié)構(gòu)(C語言版)[M]. 北京:機(jī)械工業(yè)出版社,2004.</p><p> [8] 詹春華,楊沙. C語言程序設(shè)計教程[M]. 科學(xué)出版社,2011年
84、8月.</p><p> [9] 韓利凱,李軍,高寅. 數(shù)據(jù)結(jié)構(gòu)[M]. 浙江大學(xué)出版社,2013年8月.</p><p><b> 附錄</b></p><p> /*程序功能:實現(xiàn)任意兩個高次多項式的加法和乘法運算*/</p><p> /* 多項式加法和乘法 */</p><p>
85、 #include<list></p><p> #include<iostream></p><p> #include<cassert></p><p> using namespace std; //定義多項式的項類 </p><p> class term
86、{</p><p><b> public:</b></p><p> int coef; //多項式系數(shù) </p><p> int exp; //多項式指數(shù) </p><p> //初始化項的系
87、數(shù)和指數(shù) </p><p> term(int c=0,int e=0):coef(c),exp(e){</p><p><b> }</b></p><p><b> };</b></p><p><b> //定義多項式類 </b></p><p
88、> class PolyArith{</p><p><b> private:</b></p><p> list<term> m_poly_list_first; //存儲第一個多項式 </p><p> list<term> m_poly_list_second;
89、 //存儲第二個多項式 </p><p> list<term> m_poly_list_result; //用以存儲運算結(jié)果</p><p> /*多項式私有成員函數(shù),用以乘法時的調(diào)用*/ </p><p> list<term> Poly_add(list<term>&poly_lis
90、t_first,list<term>&poly_list_second)</p><p><b> {</b></p><p> list<term> poly_list_result;//用以存儲運算結(jié)果</p><p> list<term>::iterator iter_first =
91、poly_list_first.begin();</p><p> list<term>::iterator iter_second = poly_list_second.begin();</p><p> /*該while循環(huán)針對兩個鏈表迭代器都沒有指到結(jié)尾的情形*/ </p><p> while (iter_first != poly_lis
92、t_first.end() && iter_second != poly_list_second.end())</p><p><b> {</b></p><p> term t_temp;</p><p> term t_first = (term)*iter_first;</p><p>
93、term t_second = (term)*iter_second;</p><p> if (t_first.exp>t_second.exp)</p><p><b> {</b></p><p> poly_list_result.push_back(t_first);</p><p> iter_
94、first++;</p><p><b> }</b></p><p> else if (t_second.exp>t_first.exp) {</p><p> poly_list_result.push_back(t_second);</p><p> iter_second++;</p>
95、<p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> t_temp.coef = t_first.coef + t_second.coef;</p><p> t_temp.ex
96、p = t_first.coef;</p><p> poly_list_result.push_back(t_temp);</p><p> iter_first++;</p><p> iter_second++;</p><p><b> }</b></p><p><b>
97、; }</b></p><p> //該for循環(huán)針對第一個多項式的迭代器沒有指到結(jié)尾 </p><p> //第二個指到結(jié)尾的情形 </p><p> for (;iter_first != poly_list_first.end();iter_first++)</p><p><b> {</b>
98、;</p><p> poly_list_result.push_back(*iter_first);</p><p><b> }</b></p><p> //該for循環(huán)針對第二個多項式的迭代器沒有指到結(jié)尾 </p><p> //第一個指到結(jié)尾的情形 </p><p> for
99、(; iter_second != poly_list_second.end(); iter_second++)</p><p><b> {</b></p><p> poly_list_result.push_back(*iter_second);</p><p><b> }</b></p>&l
100、t;p> return poly_list_result;</p><p><b> }</b></p><p> public: //輸入函數(shù),用以輸入多項式 </p><p> void Poly_input()</p><p><b> {</b></p><
101、;p><b> int n;</b></p><p> cout << "請輸入第一個多項式的項數(shù):" << endl;</p><p><b> cin >> n;</b></p><p> cout << "按降冪輸入第一個多項
102、式的每一項的系數(shù)和指數(shù):";</p><p> cout << endl;</p><p> for (int i = 1; i <= n; i++)</p><p><b> {</b></p><p> term t_temp;</p><p> cout
103、 << "請輸入第" << i << "項系數(shù)和指數(shù):";</p><p> cout << endl;</p><p> cin >> t_temp.coef;</p><p> cin >> t_temp.exp;</p><
104、p> m_poly_list_first.push_back(t_temp);</p><p><b> }</b></p><p><b> n = 0;</b></p><p> cout << "請輸入第二個多項式的項數(shù):" << endl;</p>
105、;<p><b> cin >> n;</b></p><p> cout << "按降冪輸入第二個多項式的每一項的系數(shù)和指數(shù):";</p><p> cout << endl;</p><p> for (int j = 1; j <= n; j++)<
106、/p><p><b> {</b></p><p> term t_temp;</p><p> cout << "請輸入第" << j << "項系數(shù)和指數(shù):";</p><p> cout << endl;</p>
107、<p> cin >> t_temp.coef;</p><p> cin >> t_temp.exp;</p><p> m_poly_list_second.push_back(t_temp);</p><p><b> }</b></p><p><b>
108、}</b></p><p> //輸出函數(shù),用以輸出多項式 </p><p> void Poly_output()</p><p><b> {</b></p><p> list<term>::iterator iter = m_poly_list_first.begin(); //
109、輸出第一個多項式的每一項 </p><p> cout<<"第一個多項式為:";</p><p> for (;iter != m_poly_list_first.end();)</p><p><b> {</b></p><p> term t_temp = *iter;<
110、;/p><p> cout << t_temp.coef << "x^" << t_temp.exp;</p><p> if (++iter != m_poly_list_first.end())</p><p> cout << "+";</p><p&
111、gt;<b> }</b></p><p> cout << endl;</p><p> list<term>::iterator iter1 = m_poly_list_second.begin(); //輸出第二個多項式的每一項 </p><p> cout<<"第二個多項式為:&q
112、uot;;</p><p> for (;iter1 != m_poly_list_second.end();)</p><p><b> {</b></p><p> term t_temp = *iter1;</p><p> cout << t_temp.coef << "
113、x^" << t_temp.exp;</p><p> if (++iter1 != m_poly_list_second.end())</p><p> cout << "+";</p><p><b> }</b></p><p> cout <&l
114、t; endl;</p><p><b> }</b></p><p> void Poly_output_result()</p><p><b> {</b></p><p> list<term>::iterator iter = m_poly_list_result.be
115、gin(); //輸出多項式結(jié)果 </p><p> for (;iter != m_poly_list_result.end();)</p><p><b> {</b></p><p> term t_temp = *iter;</p><p> cout << t_temp.coef <
116、< "x^" << t_temp.exp;</p><p> if (++iter != m_poly_list_result.end())</p><p> cout << "+";</p><p><b> }</b></p><p> c
117、out << endl;</p><p><b> }</b></p><p> //加法函數(shù),其基本思想同上邊的私有成員函數(shù)Poly_add()</p><p> //此處不帶參數(shù),多項式運算對象為私有數(shù)據(jù)成員</p><p> void Poly_add()</p><p>
118、;<b> {</b></p><p> list<term>::iterator iter_first = m_poly_list_first.begin();</p><p> list<term>::iterator iter_second = m_poly_list_second.begin();</p><p
119、> while (iter_first != m_poly_list_first.end() && iter_second != m_poly_list_second.end())</p><p><b> {</b></p><p> term t_temp;</p><p> term t_first = (t
120、erm)*iter_first;</p><p> term t_second = (term)*iter_second;</p><p> if(t_first.exp>t_second.exp)</p><p><b> {</b></p><p> m_poly_list_result.push_ba
121、ck(t_first);</p><p> iter_first++;</p><p><b> }</b></p><p> else if(t_second.exp>t_first.exp)</p><p><b> {</b></p><p> m_po
122、ly_list_result.push_back(t_second);</p><p> iter_second++;</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><
123、p> t_temp.coef = t_first.coef + t_second.coef;</p><p> t_temp.exp = t_first.exp;</p><p> m_poly_list_result.push_back(t_temp);</p><p> iter_first++;</p><p> ite
124、r_second++;</p><p><b> }</b></p><p><b> }</b></p><p> for(;iter_first != m_poly_list_first.end(); iter_first++)</p><p><b> {</b>
125、</p><p> m_poly_list_result.push_back(*iter_first);</p><p><b> }</b></p><p> for (;iter_second != m_poly_list_second.end(); iter_second++)</p><p><b&g
126、t; {</b></p><p> m_poly_list_result.push_back(*iter_second);</p><p><b> }</b></p><p><b> }</b></p><p> //乘法函數(shù),用以作多項式乘法 </p>&l
127、t;p> void Poly_multi()</p><p><b> {</b></p><p> list<term> poly_list_result;</p><p> list<term>::iterator iter_first = m_poly_list_first.begin();</
128、p><p> for (; iter_first != m_poly_list_first.end(); iter_first++)</p><p><b> {</b></p><p> list<term> poly_list_temp; //用以存儲多項式的中間運算結(jié)果 </p>&
129、lt;p> list<term>::iterator iter_second=m_poly_list_second.begin();</p><p> for (;iter_second != m_poly_list_second.end();iter_second++)</p><p><b> {</b></p><p&
130、gt; term t_temp; //用以存儲項的中間運算結(jié)果 </p><p> term t_first = (term)*iter_first;</p><p> term t_second = (term)*iter_second; //此處實現(xiàn)多項式項的相乘 </p><p&g
131、t; t_temp.coef = t_first.coef*t_second.coef; //系數(shù)相乘 </p><p> t_temp.exp = t_first.exp + t_second.exp; //指數(shù)相加 </p><p> poly_list_temp.push_back(t_temp);</p><
132、;p><b> }</b></p><p> //此處調(diào)用私有成員函數(shù)Poly_add()</p><p> poly_list_result = Poly_add(poly_list_temp, poly_list_result);</p><p><b> }</b></p><p&g
133、t; //將運算結(jié)果賦值給私有數(shù)據(jù)成員,用以輸出 </p><p> m_poly_list_result = poly_list_result;</p><p><b> }</b></p><p><b> };</b></p><p><b> //測試函數(shù) </b&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 程序語言課程設(shè)計---一元多項式簡單的計算器
- c++多項式課程設(shè)計---多項式的運算
- c++多項式課程設(shè)計---多項式的運算
- 多項式的加法與乘法
- 一元多項式運算課程設(shè)計
- 一元高次多項式和交通咨詢系統(tǒng)設(shè)計課程設(shè)計
- 順序鏈?zhǔn)揭辉囗検郊臃?、減法、乘法運算的實現(xiàn)
- 一元多項式運算課程設(shè)計報告
- 兩個變量的環(huán)鏈多項式.pdf
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計_一元多項式的加法、減法、乘法的實現(xiàn)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計-一元多項式的加法、減法、乘法的實現(xiàn)
- 課程設(shè)計---一元多項式的代數(shù)運算
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計---一元多項式的加法、減法、乘法的實現(xiàn)
- 一元多項式的加法、減法、乘法的實現(xiàn)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計
- 算法分析與設(shè)計的課程設(shè)計(一元多項式的加法、減法、乘法的實現(xiàn))
- 任意長整數(shù)加法運算-課程設(shè)計報告
- 關(guān)于特征多項式的兩個參數(shù)及其應(yīng)用.pdf
- 《程序語言綜合課程設(shè)計》實驗報告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計-一元多項式的代數(shù)運算
- 圖特征多項式的兩個新參數(shù)及其應(yīng)用.pdf
評論
0/150
提交評論