用指針和數(shù)組解決矩陣多項式加減法課程設(shè)計_第1頁
已閱讀1頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、<p><b>  1 引言</b></p><p><b>  1.1數(shù)據(jù)結(jié)構(gòu)簡介</b></p><p>  數(shù)據(jù)結(jié)構(gòu)是計算機存儲、組織數(shù)據(jù)的方式。數(shù)據(jù)結(jié)構(gòu)是指相互之間存在一種或多種特定關(guān)系的數(shù)據(jù)元素的集合。通常情況下,精心選擇的數(shù)據(jù)結(jié)構(gòu)可以帶來更高的運行或者存儲效率。數(shù)據(jù)結(jié)構(gòu)往往同高效的檢索算法和索引技術(shù)有關(guān)[1]。</p&

2、gt;<p>  一般認為,一個數(shù)據(jù)結(jié)構(gòu)是由數(shù)據(jù)元素依據(jù)某種邏輯聯(lián)系組織起來的。對數(shù)據(jù)元素間邏輯關(guān)系的描述稱為數(shù)據(jù)的邏輯結(jié)構(gòu);數(shù)據(jù)必須在計算機內(nèi)存儲,數(shù)據(jù)的存儲結(jié)構(gòu)是數(shù)據(jù)結(jié)構(gòu)的實現(xiàn)形式,是其在計算機內(nèi)的表示[2,3];此外討論一個數(shù)據(jù)結(jié)構(gòu)必須同時討論在該類數(shù)據(jù)上執(zhí)行的運算才有意義。 </p><p>  在許多類型的程序的設(shè)計中,數(shù)據(jù)結(jié)構(gòu)的選擇是一個基本的設(shè)計考慮因素。許多大型系統(tǒng)的構(gòu)造經(jīng)驗表明,系

3、統(tǒng)實現(xiàn)的困難程度和系統(tǒng)構(gòu)造的質(zhì)量都嚴重的依賴于是否選擇了最優(yōu)的數(shù)據(jù)結(jié)構(gòu)。許多時候,確定了數(shù)據(jù)結(jié)構(gòu)后,算法就容易得到了。有些時候事情也會反過來,我們根據(jù)特定算法來選擇數(shù)據(jù)結(jié)構(gòu)與之適應(yīng)。不論哪種情況,選擇合適的數(shù)據(jù)結(jié)構(gòu)都是非常重要的[1,4]。 </p><p>  選擇了數(shù)據(jù)結(jié)構(gòu),算法也隨之確定,是數(shù)據(jù)而不是算法是系統(tǒng)構(gòu)造的關(guān)鍵因素。這種洞見導(dǎo)致了許多種軟件設(shè)計方法和程序設(shè)計語言的出現(xiàn),面向?qū)ο蟮某绦蛟O(shè)計語言就是其

4、中之一。</p><p><b>  1.2課程設(shè)計目的</b></p><p>  本次課程設(shè)計目的是讓同學更加熟悉一門計算機重要的課程數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)結(jié)構(gòu)是計算機科學專業(yè)的一門考研科目,又直接涉及計算機的編程語言以及軟件設(shè)計,因此數(shù)據(jù)結(jié)構(gòu)這門課程的重要性可見一斑[2],在大二下學期開設(shè)了這門課是為了讓廣大的同學更好的學習設(shè)計軟件的思想甚至為更深層次的算法打好基礎(chǔ),運

5、用不同的數(shù)據(jù)結(jié)構(gòu)以及各種算法解決實際問題,并且在學習的途中還可以達到熟練編程語言以及計算機存儲結(jié)構(gòu)的目的,對以后的軟件工程、編譯原理、算法學習都是一個很好的鋪墊[4],所以本次課程設(shè)計的意義顯得尤為重要。</p><p><b>  1.3課程設(shè)計內(nèi)容</b></p><p>  此次課程設(shè)計的題目是運用指針數(shù)組解決矩陣多項式的加減法。矩陣多項式的運算一直以來是數(shù)據(jù)結(jié)

6、構(gòu)的一個經(jīng)典問題,解決此問題需要充分的利用到指針、結(jié)構(gòu)體、鏈表的知識,然后加入了矩陣多項式這個限制把難度提升了,解決矩陣的冪需要利用到數(shù)組的這一概念。</p><p>  而且在做多項式的加減法時又必須充分考慮到符號問題、系數(shù)問題、指數(shù)問題的特殊情況,在編寫程序同時需要多方面考量設(shè)計是否合理,輸出是否美觀界面是否友好,解決此問題的同時又是對自己的程序語言以及數(shù)據(jù)結(jié)構(gòu)的一次學習。</p><p&

7、gt;  本次課程設(shè)計共分為五章。</p><p>  第一章:引言部分,1.1主要是介紹數(shù)據(jù)結(jié)構(gòu)總體的概念,重要性,1.2是簡介此次課程設(shè)計的目的,1.3主要是提出此次課程設(shè)計的內(nèi)容。</p><p>  第二章:開發(fā)工具簡介,主要是針對我所使用的開發(fā)工具Visual Studio 2010,做一個簡單的介紹,以及最基礎(chǔ)的工程創(chuàng)建編譯,讓讀者對此款工具有個大致的了解。</p>

8、<p>  第三章:系統(tǒng)分析與設(shè)計,3.1主要是針對該題目進行需求分析,提及所需要的理論知識,數(shù)據(jù)結(jié)構(gòu)以及需要輸出的結(jié)果3.2是概要設(shè)計,主要是簡略的介紹了各功能函數(shù)的作用給出系統(tǒng)的總框架圖。</p><p>  第四章:算法與數(shù)據(jù)結(jié)構(gòu),4.1主要介紹算法思想,以及如何利用該算法解決本次課程設(shè)計內(nèi)容。4.2節(jié)介紹關(guān)鍵算法給出核心代碼的解析和數(shù)據(jù)流程圖。</p><p>  第

9、五章:系統(tǒng)分析及測試,給出具體測試示例及理論結(jié)果,而后比對運行結(jié)果,由此說明系統(tǒng)的可靠、正確性。 </p><p><b>  2 開發(fā)工具簡介</b></p><p>  本課程設(shè)計采用了微軟最新的開發(fā)工具,功能極其強大的Visual Studio 2010,無論是從功能上還是界面上都完勝很多教材使用的VC6,或者是VS前幾個版本。所以本人也把各個工程投入這個更新的

10、平臺上來,的確是提高了工作的效率。</p><p>  Visual Studio 是微軟公司推出的開發(fā)環(huán)境。是目前最流行的 Windows 平臺應(yīng)用程序開發(fā)環(huán)境。目前已正式發(fā)布的是 9.0 版本,也就是 Visual Studio 2008,而在2008年12月份,一個振奮人心的信息傳來:微軟公布了下一代開發(fā)工具和平臺“Visual Studio Team System 2010”以及.NET Framewor

11、k 4.0的相關(guān)信息,并透露他們將在2009年底或者2010年正式發(fā)布。于是Visual Studio2010正式版在今年與我們見面了,我是一個喜歡新鮮事物的人,于是Visual Studio2010便出現(xiàn)在我的機器上。</p><p>  Visual Studio 2010 與 2008 版本的對比:自從微軟于1998年發(fā)布Visual Studio 6以來,Visual Studio的IDE已經(jīng)成為軟件開發(fā)

12、工具的標桿,很多其他的開發(fā)工具,甚至是其他用途的應(yīng)用程序,都在模仿Visual Studio的IDE。但是,就像我們前面講過的那樣,從Visual Studio 6到Visual Studio 2008,雖然IDE的功能越來越多,但是并沒有什么革命性的變化,反倒因為功能太多帶來了使用上的不便,導(dǎo)致開發(fā)效率低下。程序員們都在期盼一個全新的IDE的出現(xiàn)。 </p><p>  現(xiàn)在,程序員們的夢想在Visual St

13、udio 2010中成為了現(xiàn)實。在Visual Studio 2010中,微軟用全新的WPF技術(shù)重新打造了它的編輯器,借助WPF的強大功能,新的編輯器可以實現(xiàn)很多以前Visual Studio 2008的IDE根本無法想象的功能,比如代碼的無級縮放,多窗口即時更新,文檔地圖,代碼的自動產(chǎn)生等等,這些新的IDE特性都會極大地提高程序員的開發(fā)效率。</p><p>  Visual Studio 2010界面友好,以

14、下我來簡單的介紹Visual Studio 2010對C++程序的開發(fā)過程,當然首先你必須安裝好Visual Studio 2010,以及Framework4.0,這些都可以從微軟的官方下載,并且微軟近期發(fā)布了Visual Studio 2010的漢化版,更適合英語水平較弱的程序員使用。</p><p>  打開Visual Studio 2010你會看到以下界面,我的版本是微軟發(fā)布的中文旗艦版,初始界面如圖2.

15、1所示。</p><p>  圖2.1 Visual Studio 2010初始界面</p><p>  怎么樣,是不是界面非常美觀,接下來你需要創(chuàng)建一個工程。這里與VC6.0略有不同,VC6.0可以直接建立CPP文件并且編譯,但是VS的后續(xù)版本都是基于工程的。所以我們雙擊->文件->新建->項目,出現(xiàn)創(chuàng)建項目窗口如圖2.2所示。</p><p>

16、  圖2.2創(chuàng)建項目窗口</p><p>  選中Visual C++,并且選中一個空項目,輸入項目名稱。因為我們簡單的數(shù)據(jù)結(jié)構(gòu)并不需要MFC等內(nèi)容的支持,單純的控制臺輸出就足夠了,然后出現(xiàn)了你建立的空項目,我們注意右邊的解決方案資源管理器的內(nèi)容如圖2.3所示。</p><p>  圖2.3 解決方案資源管理器</p><p>  我們雙擊源文件->右鍵添加-

17、>新建項如圖2.4所示。</p><p>  圖2.4 添加源文件新建項</p><p>  在新建項中選中C++文件并且輸入名字,單擊確定,如圖2.5所示。</p><p>  圖2.5 添加CPP文件</p><p>  這樣你就可以在新建的工程中寫入你的C++代碼了,如圖2.6所示。當然如果有需要你也可以在資源管理器的頭文件中添加

18、.h的文件寫入頭文件的內(nèi)容,相比VC6.0更加符合邏輯,也相當美觀。</p><p>  圖2.6 建立CPP文件后添加代碼界面</p><p>  當所有代碼都添加完畢后你可以單擊編譯的按鈕如圖2.7所示,同時編譯器會對你的代碼進行編譯并反饋結(jié)果如圖2.8所示,然后出現(xiàn)控制臺應(yīng)用程序。</p><p>  圖2.7 編譯程序按鈕</p><p&

19、gt;  圖2.8 錯誤信息反饋</p><p>  當然通過Visual Studio2010你也可以編寫C#,VB,VC++的代碼,因為本課程設(shè)計沒有涉及便不作介紹。我們看到了Visual Studio2010全面的功能和華麗的界面,自此我們的強大的開發(fā)工具Visual Studio2010介紹完畢。</p><p><b>  3 系統(tǒng)分析與設(shè)計</b><

20、/p><p><b>  3.1需求分析</b></p><p>  例如矩陣多項式的題目如下:(已知 f(x)= x^3 + x , g(x)= 5x^7 + 3x^3 + 7x +8 和A=, 求f(A)+g(A), 即 (A^3 + A)+(5A^7 + 3A^3 + 7A +8E). 這里</p><p><b>  E=。 &l

21、t;/b></p><p>  我需要解決的是矩陣多項式的加,(當然減法也可以同時得到解決),我們必須考慮的問題有兩個,首先拋棄矩陣問題單純的考慮多項式加減,多項式加減實現(xiàn)并不困難,只需要把指數(shù)相同的合并系數(shù),指數(shù)不同的就按指數(shù)的降(升)冪依次排列。就如上文的f(x)= x^3 + x , g(x)= 5x^7 + 3x^3 + 7x +8,相加的結(jié)果即為k(x)=5x^7+4x^3+8x+8。</p

22、><p>  問題的難點在加入矩陣之后,需要充分利用到我們線性代數(shù)的內(nèi)容,加入的矩陣必須有一個約束條件,那就是方陣,不然便無法完成乘冪的運算。譬如將矩陣A定義成:</p><p>  ,取指數(shù)為2則乘冪后的結(jié)果為 ,然后用矩陣代替多項式中的x的n此冪,系數(shù)保持不變,減法可以使用同樣的思想進行處理,我們所做的工作就是要完成這個目的。</p><p><b>  

23、3.2概要設(shè)計</b></p><p>  為了達成此次課程設(shè)計的目的我們需要如下的函數(shù):</p><p>  1)建立多項式函數(shù):</p><p>  Polyn CreatePolyn(Polyn head,int m)</p><p>  主要是為了多項式創(chuàng)建一個鏈表,在結(jié)點中寫入數(shù)據(jù)。</p><p&g

24、t;<b>  2)插入功能函數(shù):</b></p><p>  void Insert(Polyn p,Polyn h)</p><p>  主要是為了實現(xiàn)為結(jié)點在指定鏈表中尋找插入的位置。</p><p>  3)銷毀多項式函數(shù):</p><p>  void DestroyPolyn(Polyn p)</p&g

25、t;<p>  當前多項式鏈表使用之后,銷毀鏈表,釋放空間。</p><p>  4)多項式輸出功能函數(shù):</p><p>  void PrintPolyn(Polyn P)</p><p>  按照一定的規(guī)則輸出矩陣多項式。</p><p>  5)多項式指數(shù)比較以及非空判斷函數(shù):</p><p> 

26、 int compare(Polyn a,Polyn b)</p><p>  比較多項式的指數(shù)大小并返回相應(yīng)數(shù)值。</p><p>  6)多項式相加功能函數(shù):</p><p>  Polyn AddPolyn(Polyn pa,Polyn pb)</p><p>  主要是實現(xiàn)多項式的相加并返回頭指針。</p><p&

27、gt;  7)多項式相減功能函數(shù):</p><p>  Polyn SubtractPolyn(Polyn pa,Polyn pb)</p><p>  主要是實現(xiàn)多項式的相加并返回頭指針。</p><p>  8)矩陣求冪功能函數(shù):</p><p>  void MatrixPlus(int power,int line)</p>

28、;<p>  主要是實現(xiàn)矩陣的冪運算并輸出結(jié)果。</p><p>  針對以上功能函數(shù)畫出系統(tǒng)總框架圖如圖3.1所示。</p><p>  圖3.1 系統(tǒng)總框架圖</p><p><b>  4 算法與數(shù)據(jù)結(jié)構(gòu)</b></p><p><b>  4.1算法思想</b></p&g

29、t;<p>  多項式的運算多次在數(shù)據(jù)結(jié)構(gòu)問題中出現(xiàn),需要以鏈表的知識為基礎(chǔ),只要內(nèi)存中還有空間,就期望能夠存儲任意數(shù)目的不同多項式。通常情況下我們需要存儲的多項式為:</p><p>  A(x)=ax^n+bx^m+cx^o……</p><p>  其中a、b、c等為系數(shù),m、n、o為指數(shù),所以我們需要系數(shù)域coef和指數(shù)域expn,以及指向下一項的指針link,Node

30、結(jié)點可以表示為如圖4.1所示。</p><p>  圖4.1 Node結(jié)點結(jié)構(gòu)示意圖</p><p>  以多項式加法情況為例,為了將a,b兩個多項式相加,得對多項式進行比較。如果這兩項的指數(shù)相同,那么把它們的系數(shù)相加,并生成一個結(jié)果項,然后移動這兩個指針,分別指向下一個結(jié)點[3,6],如圖4.2所示。</p><p><b>  A</b>&

31、lt;/p><p><b>  B</b></p><p><b>  Null</b></p><p><b>  D</b></p><p>  圖4.2 a.expn=b.expn示意圖</p><p>  如果a的當前項指數(shù)小于b的當前項指數(shù),那么

32、生成b的副本項,加入到結(jié)果d中,并移動指針指向b的下一項。而a的情況采取同樣的操作[6],如圖4.3所示。</p><p><b>  A</b></p><p><b>  B</b></p><p><b>  Null</b></p><p><b>  D&l

33、t;/b></p><p>  圖4.3 a.expn<b.expn示意圖</p><p>  每次生成一個新結(jié)點,設(shè)置它的coef域和expn域,并將它加入到d的尾端。等a或b其中一個多項式讀完之后,掃描另外一多項式情況。如果沒讀完則加入d的尾端,釋放a和b。減法的過程與之相似。</p><p>  這個基本算法很直觀,就是使用流的方法在多項式上移動

34、,要么是復(fù)制項,要么就是將其加入到結(jié)果中。因此,根據(jù)下一對指數(shù)是=、<、還是>的關(guān)系,while循環(huán)具有三個case語句,可以輕松實現(xiàn)比較的功能。</p><p>  關(guān)于矩陣的冪問題,需要用到3個數(shù)組,matrix、answer、tempmatrix,matrix用來錄入矩陣,answer用來記錄矩陣計算結(jié)果,tempmatrix協(xié)助上述兩個矩陣完成矩陣冪運算并把值傳入answer,矩陣冪所用到的算

35、法需要參考線性代數(shù)關(guān)于矩陣的內(nèi)容。</p><p>  4.2關(guān)鍵數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)流程圖</p><p>  矩陣的冪問題是被大家認為的難點,需要利用到線性代數(shù)的知識,也被我認為是我本次課程設(shè)計最精華的部分,所以我在此也對我這段代碼做出一個詳細的講解,其代碼如下:</p><p>  void MatrixPlus(int power,int line)//定義mat

36、rixplus函數(shù)</p><p><b>  {</b></p><p>  //answer初始化</p><p>  for(int i=0;i<line;i++)</p><p><b>  {</b></p><p>  for(int j=0;j<li

37、ne;j++)</p><p>  answer[i][j]=matrix[i][j]; //為了清空answer原有內(nèi)容而賦上matrix</p><p>  } //初始內(nèi)容不然運算會出錯</p><p>  while(power>1)//賦值的循環(huán)</p><p><

38、b>  {</b></p><p>  power--; //每執(zhí)行一次冪數(shù)自減</p><p>  for(int z=0;z<line;z++)//行循環(huán) </p><p><b>  {</b></p><p>  for(int

39、 y=0;y<line;y++)//列循環(huán)</p><p><b>  {</b></p><p>  tempmatrix[z][y]=answer[z][y]; //把answer的內(nèi)容賦值給中間數(shù)組</p><p>  } //之后就可以用tempmatrix用作每次的乘冪運算</p&

40、gt;<p><b>  }</b></p><p>  for(int i=0;i<line;i++)//自乘的循環(huán)</p><p><b>  {</b></p><p>  for(int k=0;k<line;k++)</p><p><b>  {<

41、;/b></p><p>  int temp=0;//定義中間變量并初始化</p><p>  for(int j=0;j<line;j++)</p><p><b>  { </b></p><p>  temp=temp+tempmatrix[i][j]*matrix[j][k];//運用線性代數(shù)的知識

42、計算每行的元素</p><p>  answer[i][k]=temp;//將計算的結(jié)果賦值給answer</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b

43、>  }</b></p><p>  用到的算法思想就是線性代數(shù)矩陣乘法的內(nèi)容。我們給出兩個矩陣,然后把第一個矩陣按行劃分,第二個矩陣按列劃分。然后用行的元素乘以對應(yīng)列的元素并相加作為新矩陣的一個元素,temp=temp+tempmatrix[i][j]*matrix[j][k];這條語句就是為了實現(xiàn)這個作用,行元素與列元素相乘后存在temp變量中,然后經(jīng)過循環(huán)把temp的結(jié)果加進新的行元素乘以

44、列元素,幾次累加后就是得出新矩陣的一個元素。然后經(jīng)過多次循環(huán)得出最終的新矩陣,由answer數(shù)組記錄,然后由循環(huán)的方式輸出。</p><p>  本來在做這個功能的時候answer輸出的數(shù)據(jù)一直只有第一次的計算是正確的,百思不得其解,為了解決這個問題我用了斷點來檢測temp,和answer[100][100],后來發(fā)現(xiàn)是每次從輸出函數(shù)調(diào)用matrixplus函數(shù)的時候answer沒有清空造成的,還保留著上次的數(shù)據(jù)

45、,所以引入了answer清空的循環(huán),和中間變量tempmatrix來保存中間變量,問題得到解決。</p><p>  此程序的重要數(shù)據(jù)流程在如下的3個圖中列出:</p><p><b>  1)矩陣的冪</b></p><p> ?。?)功能:矩陣按給定冪指數(shù)乘冪。</p><p> ?。?)數(shù)據(jù)流入:輸入矩陣以及調(diào)用乘

46、冪函數(shù)。</p><p>  (3)數(shù)據(jù)流出:矩陣乘冪后的結(jié)果。</p><p> ?。?)程序流程圖:矩陣乘冪流程圖如圖4.4所示。</p><p> ?。?)測試要點:乘冪結(jié)果是否計算正確。</p><p>  圖4.4 矩陣冪運算流程圖</p><p><b>  2)多項式的加法</b>&

47、lt;/p><p> ?。?)功能:將兩多項式相加。</p><p> ?。?)數(shù)據(jù)流入:輸入函數(shù)。</p><p>  (3)數(shù)據(jù)流出:多項式相加后的結(jié)果。</p><p> ?。?)程序流程圖:多項式的加法運算流程圖如圖4.5所示。</p><p>  (5)測試要點:兩多項式是否為空,為空則提示重新輸入,否則,運算。

48、</p><p><b>  是</b></p><p><b>  否</b></p><p>  圖4.5 多項式加法運算流程圖</p><p><b>  3)多項式的減法</b></p><p>  (1)功能:將兩多項式相減。</p>

49、;<p>  (2)數(shù)據(jù)流入:調(diào)用輸入函數(shù)。</p><p>  (3)數(shù)據(jù)流出:多項式相減后的結(jié)果。</p><p> ?。?)程序流程圖:多項式的減法運算流程圖如圖4.6所示。</p><p> ?。?)測試要點:兩多項式是否為空,為空則提示重新輸入,否則,進行運算。</p><p><b>  是</b&g

50、t;</p><p><b>  否</b></p><p>  圖4.6 多項式減法運算流程圖</p><p><b>  5 系統(tǒng)分析及測試</b></p><p>  為了方便我的驗證我只去一個2*2的方陣,因為乘冪運算的運算量非常巨大,這種規(guī)格的方陣才在我們?nèi)说挠嬎惴秶嶋H上該系統(tǒng)可以運算

51、100*100的方陣,計算能力可見一斑。</p><p>  我選取了矩陣A為,則A^2=,A^3=,A^4=</p><p>  而多項式我們選取f(x)= x^4+13x^2 +3x , g(x)= 8x^3 + 3x^2,理論得到的k(x)=f(x)+g(x)=x^4+8x^3+16x^2+3x。</p><p>  h(x)= f(x)-g(x)=x^4-8

52、x^3+10x^2+3x。然后用A的乘冪代替文中x的乘冪部分即可。</p><p>  我們運行程序來看看理論結(jié)果與實際結(jié)果是否相符,該程序界面友好使用簡單,使用中只需要按提示完成操作即可,運行情況如下。</p><p>  1)進入程序,開始界面如圖5.1所示。</p><p><b>  圖5.1 開始界面</b></p>&

53、lt;p>  2)按要求輸入矩陣的行數(shù),以及每行的元素如圖5.2所示。</p><p>  圖5.2 輸入矩陣的行數(shù)及元素</p><p>  3)按系統(tǒng)提示輸入多項式a,b的項數(shù)以及各項指數(shù)和系數(shù),如圖5.3所示。</p><p>  圖5.3 輸入多項式a,b項數(shù)以及各項指數(shù)系數(shù)</p><p>  4)按系統(tǒng)提示輸入1,則輸出兩個

54、矩陣多項式,如圖5.4所示:</p><p>  圖5.4 輸出矩陣多項式a,b</p><p>  5)根據(jù)提示按2號操作鍵則輸出多項式a+b,如圖5.5所示。</p><p>  圖5.5 多項式a+b輸出結(jié)果</p><p>  6)輸入3號操作,則出現(xiàn)多項式a-b的結(jié)果,如圖5.6所示。</p><p>  圖

55、5.6 多項式a-b輸出結(jié)果</p><p>  8)按4號鍵則程序退出。</p><p>  經(jīng)過運行和調(diào)試,各部分功能正常,結(jié)果輸出與理論預(yù)測結(jié)果一致,則證明了該程序的正確性,界面整潔美觀。并能用此程序進行更龐大的方陣計算。</p><p><b>  6 結(jié)束語</b></p><p>  這次課程設(shè)計何老師給我定

56、的題目是矩陣多項式的運算,何老師細致的給我們分析了每個課題用何種數(shù)據(jù)結(jié)構(gòu)去完成,開始只讓我完成加法運算,但是由于時間充裕并且減法在加法的基礎(chǔ)上容易實現(xiàn),所以我同時完成了矩陣多項式的加法以及減法運算。這次課程設(shè)計程序編寫方面給我感覺最麻煩的在于求矩陣的冪運算上面,多項式的加法和減法編程并不難實現(xiàn),關(guān)鍵在于如何編好矩陣的冪這個函數(shù)并且加到多項式里面并輸出出來,為此我查閱了國外的經(jīng)典教材,從矩陣的乘法加以改進簡化就成了我自己的矩陣的冪功能函數(shù)

57、,我是分別在VS2010下建立了兩個工程,分別通過了多項式的運算以及矩陣的冪兩種運算,然后再提取矩陣的冪的運算函數(shù)稍加修改,插入到多項式的輸出函數(shù)中去。當然其間也遇到了不少麻煩。比如:在矩陣的自乘我的answer數(shù)組每次忘記清零所以造成了之前的結(jié)果一直不正確。然而我利用端點監(jiān)視幾個重點變量的值終于發(fā)現(xiàn)了矛盾的所在。</p><p>  當然我此次寫的程序也存在很多的不足,就拿輸入來說,系統(tǒng)并不能直接識別一個標準多

58、項式的輸入,需要你人為的劃分指數(shù)系數(shù)等等,如果想改善此功能必須要加入一個函數(shù),此函數(shù)讀入一個字符串然后判斷,然后分離出指數(shù)系數(shù),這當然是不容易實現(xiàn)的,所以本次課設(shè)從簡了。然后再數(shù)組的定義方面只定義了[100][100]這樣規(guī)格的二維數(shù)組,超過此規(guī)格的矩陣計算無法處理。另外一個問題是在結(jié)果輸出中存在不美觀的問題,并不能像矩陣多項式的標準格式那么輸出,而是采用了一個近似的方式,這個問題可以加入Visual C++的控件予以處理,并且這樣一來

59、界面就更美觀。但是利用到窗口設(shè)計必然涉及更深層次的可視化設(shè)計,由于本人技術(shù)有限沒有進行此類開發(fā),便導(dǎo)致了此程序的缺憾。</p><p><b>  致謝</b></p><p>  本次課程設(shè)計得到了**老師的大力幫助,首先**老師為我講解了為了解決此問題需要涉及到的數(shù)據(jù)結(jié)構(gòu),以及解決方案。之后何锫老師又詳細審閱了我的初稿,給了我十幾條修改意見,然后又單獨給我講解了如

60、何改進,才促使我完成本次課程設(shè)計。在此對**老師致謝,感謝**老師不遺余力的幫助。另外我的同學們也在課程設(shè)計期間給予了我參考意見,在此表示感謝。</p><p><b>  參考文獻</b></p><p>  [1] [美]巴斯,朱洪翻譯.《計算機算法:設(shè)計和分析引論》 上海:復(fù)旦大學出版社. 1985</p><p>  [2] 嚴蔚敏

61、,吳偉民. 《數(shù)據(jù)結(jié)構(gòu)(C語言版)》北京:清華大學出版社.2010</p><p>  [3] Frank M.Carrano 《數(shù)據(jù)結(jié)構(gòu)和問題求解(C++)》 北京:清華大學出版社.2005</p><p>  [4] Stanley Lippman. 《C++Primer中文版》北京:人民郵電出版社.2009</p><p>  [5] [美]阿霍. 《

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論