課程設(shè)計報告---一元多項式計算器_第1頁
已閱讀1頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  課程設(shè)計(論文)任務(wù)書</p><p>  一、課程設(shè)計(論文)題目  一元多項式計算器 </p><p>  二、課程設(shè)計(論文)工作自 2011 年 12 月 26 日起至 2011 年 12 月 30 日止 </p><p>  

2、三、課程設(shè)計(論文) 地點: 創(chuàng) 新 大 樓 機 房 </p><p>  四、課程設(shè)計(論文)內(nèi)容要求:</p><p>  1.本課程設(shè)計的目的</p><p> ?、庞?xùn)練學(xué)生靈活應(yīng)用所學(xué)數(shù)據(jù)結(jié)構(gòu)知識,獨立完成問題分析,結(jié)合數(shù)據(jù)結(jié)構(gòu)理論知識,</p><p>  編

3、寫程序求解指定問題;</p><p> ?、瞥醪秸莆哲浖_發(fā)過程的問題分析、系統(tǒng)設(shè)計、程序編碼、測試等基本方法和技能;</p><p> ?、翘岣呔C合運用所學(xué)的理論知識和方法獨立分析和解決問題的能力,鞏固、深化學(xué)生</p><p>  的理論知識,提升編程水平。</p><p>  2.課程設(shè)計的任務(wù)及要求</p><p&

4、gt;<b>  1)基本要求:</b></p><p>  ⑴要求從分析題目的需求入手,按設(shè)計抽象數(shù)據(jù)類型、構(gòu)思算法、通過設(shè)計實現(xiàn)抽象</p><p>  數(shù)據(jù)類型、編寫上機程序和上機調(diào)試等若干步驟完成題目,最終寫出完整的報告;</p><p>  ⑵在程序設(shè)計階段應(yīng)盡量利用已有的標(biāo)準函數(shù),加大代碼的重用率;</p><p

5、> ?、浅绦蛟O(shè)計語言推薦使用C/C++,程序書寫規(guī)范,源程序需加必要的注釋;</p><p>  ⑷每位同學(xué)需提交可獨立運行的程序和規(guī)范的課程設(shè)計報告。</p><p>  2)課程設(shè)計論文編寫要求</p><p> ?、爬碚撛O(shè)計部分以課程設(shè)計論文的形式提交,格式必須按照課程設(shè)計論文標(biāo)準格式進</p><p><b>  行書

6、寫和裝訂;</b></p><p> ?、普n程設(shè)計報告(論文)包括中文目錄、設(shè)計任務(wù)、需求分析、概要設(shè)計、詳細設(shè)計、</p><p>  編碼實現(xiàn)、調(diào)試分析、課設(shè)總結(jié)、謝辭、參考文獻、附錄等;</p><p>  ⑶設(shè)計部分應(yīng)包含系統(tǒng)功能模塊圖,調(diào)試分析應(yīng)包括運行截圖等。</p><p>  3)課程設(shè)計評分標(biāo)準: </p&

7、gt;<p> ?、艑W(xué)習(xí)態(tài)度:10分;</p><p> ?、葡到y(tǒng)設(shè)計:20分;</p><p> ?、蔷幊陶{(diào)試:20分;</p><p> ?、然卮饐栴}:20分;</p><p> ?、烧撐淖珜懀?0分。</p><p><b>  4)參考文獻:</b></p>&

8、lt;p>  ⑴嚴蔚敏,吳偉民. 數(shù)據(jù)結(jié)構(gòu)(C語言版)[M]. 清華大學(xué)出版社. 2010.3 </p><p> ?、茋牢得?吳偉民. 數(shù)據(jù)結(jié)構(gòu)題集(C語言版)[M]. 清華大學(xué)出版社. 1999.2</p><p>  ⑶何欽銘,馮燕等. 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計[M]. 浙江大學(xué)出版社. 2007.8</p><p>  5)課程設(shè)計進度安排</p>

9、<p>  ⑴準備階段(4學(xué)時):選擇設(shè)計題目、了解設(shè)計目的要求、查閱相關(guān)資料;</p><p> ?、瞥绦蚰K設(shè)計分析階段(4學(xué)時):程序概要設(shè)計、詳細設(shè)計;</p><p>  ⑶代碼編寫調(diào)試階段(8學(xué)時):程序模塊代碼編寫、調(diào)試、測試;</p><p>  ⑷撰寫論文階段(4學(xué)時):總結(jié)課程設(shè)計任務(wù)和設(shè)計內(nèi)容,撰寫課程設(shè)計論文。</p>

10、;<p>  學(xué)生簽名: 高田田 </p><p>  2011 年 12 月 26 日</p><p>  6)課程設(shè)計題目具體要求:</p><p><b>  問題描述:</b></p><p>  設(shè)有一元多項式Am(x) 和Bn(x).</p><p

11、>  Am(x) = A0+A1x1+A2x2+A3x3+… +Amxm</p><p>  Bn(x) = B0+B1x1+B2x2+B3x3+… +Bnxn</p><p>  試求M(x)= Am(x)+Bn(x)、M(x)= Am(x)-Bn(x)和M(x)= Am(x)×Bn(x)。</p><p><b>  基本要求: <

12、;/b></p><p>  ⑴首先判定多項式是否稀疏;</p><p>  ⑵分別采用順序和動態(tài)存儲結(jié)構(gòu)實現(xiàn);</p><p>  ⑶結(jié)果M(x)中無重復(fù)階項和無零系數(shù)項;</p><p> ?、纫筝敵鼋Y(jié)果的升冪和降冪兩種排列情況。</p><p>  課程設(shè)計(論文)評審意見</p><

13、p>  (1)學(xué)習(xí)態(tài)度(10分):優(yōu)(?。?、良( )、中( )、一般(?。?、差( ); </p><p>  (2)系統(tǒng)設(shè)計(20分):優(yōu)( )、良(?。⒅校ā。⒁话悖ā。⒉睿ā。?</p><p> ?。?)編程調(diào)試(20分):優(yōu)( )、良( )、中(?。⒁话悖ā。?、差(?。?lt;/p><p> ?。?)回答問題(20分):優(yōu)( )、良(?。?、中

14、( )、一般(?。?、差(?。?lt;/p><p> ?。?)論文撰寫(30分):優(yōu)(?。⒘迹ā。⒅校ā。⒁话悖ā。?、差( );</p><p> ?。?)格式規(guī)范性及考勤是否降等級:是(?。?、否(?。?lt;/p><p>  評閱人: 王英華   職稱: 講師 </p><p>  2012 年 1 月 4 日<

15、/p><p><b>  目 錄</b></p><p><b>  一、需求分析</b></p><p><b>  二、概要設(shè)計</b></p><p><b>  三、詳細設(shè)計</b></p><p>  四、編碼實現(xiàn)(源

16、代碼)</p><p><b>  五、調(diào)試分析</b></p><p><b>  六、心得體會</b></p><p><b>  一、需求分析</b></p><p><b>  1. 加法操作</b></p><p>

17、<b>  輸入項數(shù)3</b></p><p>  按降冪輸入系數(shù)和指數(shù)</p><p><b>  7 8</b></p><p><b>  6 7</b></p><p><b>  6 6</b></p><p>  Mul

18、 Ploy L is:</p><p>  + 7 X^8 + 6 X^7 + 6 X^6</p><p><b>  輸入項數(shù)2</b></p><p>  按降冪輸入系數(shù)和指數(shù)</p><p><b>  4 6</b></p><p><b>  2 3

19、</b></p><p>  Mul Ploy L is:</p><p>  + 4 X^6 + 2 X^3</p><p>  選擇要執(zhí)行的操作:1,加法運算2,減法運算:1</p><p><b>  計算結(jié)果為</b></p><p>  Mul Ploy L is:&l

20、t;/p><p>  + 7 X^8 + 6 X^7 + 10 X^6 + 2 X^3</p><p><b>  2.減法操作</b></p><p><b>  輸入項數(shù)2</b></p><p>  按降冪輸入系數(shù)和指數(shù)</p><p><b>  4 6&

21、lt;/b></p><p><b>  5 3</b></p><p>  Mul Ploy L is:</p><p>  + 4 X^6 + 5 X^3</p><p><b>  輸入項數(shù)1</b></p><p>  按降冪輸入系數(shù)和指數(shù)</p>

22、;<p><b>  5 3</b></p><p>  Mul Ploy L is:</p><p><b>  + 5 X^3</b></p><p>  選擇要執(zhí)行的操作:1,加法運算2,減法運算:2</p><p><b>  計算結(jié)果為</b><

23、/p><p>  Mul Ploy L is:</p><p><b>  + 4 X^6</b></p><p><b>  二.概要設(shè)計</b></p><p>  單連表的抽象數(shù)據(jù)類型定義:</p><p><b>  ADT List{</b>&

24、lt;/p><p>  數(shù)據(jù)對象:D={ai|ai∈ElemSet,i=1,2,…,n,n≥0}</p><p>  數(shù)據(jù)關(guān)系:R1={<ai-1,ai>| ai-1, ai∈D,i=2,…,n}</p><p><b>  基本操作:</b></p><p>  InitList(﹠L)</p>

25、<p>  //操作結(jié)果:構(gòu)造一個空的線性表</p><p>  CreatPolyn(&L)</p><p>  //操作結(jié)果:構(gòu)造一個以單連表存儲的多項試</p><p>  DispPolyn(L)</p><p>  //操作結(jié)果:顯示多項試</p><p>  Polyn(&pa,&

26、amp;pb)</p><p>  //操作結(jié)果:顯示兩個多項試相加,相減的結(jié)果</p><p>  } ADT List</p><p><b>  本程序包含模塊:</b></p><p>  typedef struct LNode //定義單鏈表</p><p><b>

27、  {</b></p><p>  }LNode,*LinkList;</p><p>  void InitList(LinkList &L) //定義一個空表</p><p><b>  { }</b></p><p>  void CreatPolyn(LinkList &L)

28、 //用單鏈表定義一個多項式</p><p><b>  { }</b></p><p>  void DispPolyn(LinkList L) //顯示輸入的多項式</p><p><b>  { }</b></p><p>  void Polyn(LinkList &pa,

29、LinkList &pb)</p><p><b>  {}</b></p><p>  void main()</p><p>  { //定義一個單連表;</p><p>  cout<<endl<<" *****************歡迎來到一元多項式計算

30、程序*************** "<<endl;</p><p>  LNode *L1,*L2;</p><p>  Polyn(L1,L2);</p><p><b>  }</b></p><p>  加,減操作模塊——實現(xiàn)加減操作</p><p>  各

31、模塊之間的調(diào)用關(guān)系如下:</p><p><b>  三.詳細設(shè)計</b></p><p>  1.根據(jù)題目要求采用單連表存儲結(jié)構(gòu)</p><p>  typedef struct LNode //定義單鏈表</p><p><b>  {</b></p><p> 

32、 }LNode,*LinkList;</p><p>  void InitList(LinkList &L) //定義一個空表</p><p><b>  { }</b></p><p>  void CreatPolyn(LinkList &L) //用單鏈表定義一個多項式</p><p>

33、<b>  { }</b></p><p>  void DispPolyn(LinkList L) //顯示輸入的多項式</p><p><b>  { }</b></p><p>  void Polyn(LinkList &pa,LinkList &pb)</p><p&

34、gt;<b>  {}</b></p><p><b>  2.主函數(shù)main</b></p><p>  void main()</p><p><b>  {</b></p><p>  LNode *L1,*L2;</p><p>  Polyn(

35、L1,L2);}</p><p>  函數(shù)的調(diào)用關(guān)系層次結(jié)構(gòu)</p><p>  四. 編碼實現(xiàn)(源代碼)</p><p>  #include<iostream.h></p><p>  #include<malloc.h></p><p>  typedef struct LNode

36、 //定義單鏈表</p><p><b>  {</b></p><p>  float xishu; //系數(shù)</p><p>  int zhishu; //指數(shù)</p><p>  struct LNode *next;</p><p>  }LNode,*LinkList

37、;</p><p>  void InitList(LinkList &L) //定義一個空表</p><p><b>  {</b></p><p>  L=(LinkList)malloc(sizeof(LNode));</p><p>  L->next=NULL;</p><

38、p><b>  return;</b></p><p><b>  }</b></p><p>  void CreatPolyn(LinkList &L) //用單鏈表定義一個多項式</p><p><b>  {</b></p><p><b>

39、  int m;</b></p><p>  LinkList q,p;</p><p>  InitList(L);</p><p><b>  q=L;</b></p><p>  cout<<"輸入項數(shù)";</p><p><b>  c

40、in>>m;</b></p><p>  cout<<"按降冪輸入系數(shù)和指數(shù)"<<endl;</p><p>  for(int i=0;i<m;i++)</p><p><b>  {</b></p><p>  p=(LinkList)mall

41、oc(sizeof(LNode)); //生成新結(jié)點</p><p>  cin>>p->xishu>>p->zhishu;</p><p>  p->next=NULL;</p><p>  q->next=p;</p><p><b>  q=p;</b></p

42、><p><b>  }</b></p><p><b>  return;</b></p><p><b>  }</b></p><p>  void DispPolyn(LinkList L) //顯示輸入的多項式</p><p>  { Li

43、nkList p;</p><p>  p=L->next;</p><p>  cout<<"Mul Ploy L is: \n"<<" ";</p><p><b>  while(p)</b></p><p>  { if(p->xi

44、shu>0) //如果系數(shù)大于0則加上+號</p><p>  cout<<" + "<<p->xishu<<" X^"<<p->zhishu<<" ";</p><p>  else cout<<" "<<

45、;p->xishu<<" X^"<<p->zhishu<<" ";</p><p>  p=p->next;</p><p><b>  }</b></p><p>  cout<<endl;</p><p><

46、;b>  return ;</b></p><p><b>  }</b></p><p>  void Polyn(LinkList &pa,LinkList &pb)</p><p><b>  {</b></p><p>  LNode *p,*q,*pre,

47、*temp;</p><p>  int sum,t;</p><p>  CreatPolyn(pa);</p><p>  DispPolyn(pa);</p><p>  CreatPolyn(pb);</p><p>  DispPolyn(pb);</p><p>  p=pa->

48、;next; //p指向pa頭結(jié)點</p><p>  q=pb->next; //q指向qa頭結(jié)點</p><p>  pre=pa; //用來記錄合成的多項式</p><p>  cout<<"選擇要執(zhí)行的操作:1,加法運算2,減法運算:";</p><p><b>  

49、cin>>t;</b></p><p><b>  if(t==1)</b></p><p><b>  {</b></p><p>  while(p!=NULL&&q!=NULL) //當(dāng)兩個多項式都為完時</p><p><b>  {&l

50、t;/b></p><p>  if(p->zhishu<q->zhishu) //如果q大于p的指數(shù)把q項存入</p><p><b>  {</b></p><p>  pre->next=q; </p><p>  pre=pre->next;</p><

51、p>  q=q->next;</p><p><b>  }</b></p><p>  else if(p->zhishu==q->zhishu) //如果q等于p的指數(shù)把q項q項和存入</p><p><b>  {</b></p><p>  sum=p->x

52、ishu+q->xishu;</p><p>  if(sum!=0)//如果和不為0</p><p><b>  {</b></p><p>  p->xishu=sum;</p><p>  pre->next=p;</p><p>  pre=pre->next;&l

53、t;/p><p>  p=p->next;</p><p><b>  temp=q;</b></p><p>  q=q->next;</p><p>  free(temp);//釋放temp</p><p><b>  }</b></p><

54、p>  else //如果和為0</p><p><b>  {</b></p><p>  temp=p->next;</p><p>  free(p);//釋放p</p><p><b>  p=temp;</b></p><p>  temp=q-&g

55、t;next;</p><p>  free(q); //釋放q</p><p><b>  q=temp;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  else //如果p大于q的

56、指數(shù)把p項存入 </p><p><b>  {</b></p><p>  pre->next=p; </p><p>  pre=pre->next;</p><p>  p=p->next; </p><p><b>  }</b

57、></p><p><b>  }</b></p><p>  if(p!=NULL) //如果p為完q完,則p接入</p><p>  pre->next=p;</p><p>  else //如果q為完p完,則q接入</p><p>  pre->next=q

58、; </p><p>  cout<<"計算結(jié)果為"<<endl;</p><p>  DispPolyn(pa);</p><p><b>  }</b></p><p>  else if(t==2)</p><p><b>

59、  {</b></p><p>  while(p!=NULL&&q!=NULL) //當(dāng)兩個多項式都為完時</p><p><b>  {</b></p><p>  if(p->zhishu<q->zhishu) //如果q大于p的指數(shù)把-q項存入 </p><p>

60、<b>  {</b></p><p>  q->xishu=-q->xishu;</p><p>  pre->next=q; </p><p>  pre=pre->next;</p><p>  q=q->next;</p><p><b>  }&l

61、t;/b></p><p>  else if(p->zhishu==q->zhishu) //如果q等于p的指數(shù)把q項q項和存入</p><p><b>  {</b></p><p>  sum=p->xishu-q->xishu;</p><p>  if(sum!=0)//如果和

62、不為0</p><p><b>  {</b></p><p>  p->xishu=sum;</p><p>  pre->next=p;</p><p>  pre=pre->next;</p><p>  p=p->next;</p><p>

63、<b>  temp=q;</b></p><p>  q=q->next;</p><p>  free(temp); //釋放temp</p><p><b>  }</b></p><p>  else //如果和為0</p><p><b>  

64、{</b></p><p>  temp=p->next;</p><p>  free(p); //釋放p</p><p><b>  p=temp;</b></p><p>  temp=q->next;</p><p>  free(q); //釋放q</p

65、><p><b>  q=temp;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  else //如果p大于q的指數(shù)把p項存入 </p><p><b>  {</

66、b></p><p>  pre->next=p; </p><p>  pre=pre->next;</p><p>  p=p->next; </p><p><b>  }</b></p><p><b>  }</b></p&g

67、t;<p>  if(p!=NULL) //如果p為空q空,則p接入</p><p>  pre->next=p;</p><p>  else //如果q為空p空,則-q接入</p><p><b>  {</b></p><p>  pre->next=q; </p>&l

68、t;p>  while(q!=NULL)</p><p><b>  {</b></p><p>  q->xishu=-q->xishu;</p><p>  q=q->next;</p><p><b>  }</b></p><p><b&

69、gt;  }</b></p><p>  cout<<"計算結(jié)果為"<<endl;</p><p>  DispPolyn(pa);</p><p><b>  }</b></p><p><b>  }</b></p><

70、p>  void main()</p><p>  { cout<<endl<<" *****************歡迎來到一元多項式計算程序*************** "<<endl;</p><p>  LNode *L1,*L2;</p><p>  Polyn(L

71、1,L2);</p><p><b>  } </b></p><p><b>  五、調(diào)試分析</b></p><p><b>  1. 加法操作模塊</b></p><p><b>  2. 減法操作模塊</b></p><p>

72、;<b>  六.心得體會</b></p><p>  通過做一元多項式計算器,途中遇到了不少的問題通過此次課程設(shè)計,想要做出自己的課程設(shè)計必須對本章節(jié)內(nèi)容有系統(tǒng)了解,我明白了在寫代碼前,腦海中必須有編寫程序的思路是很重要的。在編寫一個程序之前,必須有自己的思路,否則根本不知道如何下手,更不可能編出好的程序。就算能編出程序來,相信編出的程序的邏輯性也不會很強,因為你是想到什么就編什么,不系統(tǒng)

73、。而且會有很多錯誤,會影響心情,也影響效率。因此在我們編程序之前一定要做好充分的準備,首先要理清自己的思路,然后再將思路分劃成幾個模塊,一塊一塊的編寫,最后再將所有的模塊聯(lián)系起來,組成一個完整的程序。在實踐之前,最好將程序編寫好在紙上,這樣在編譯的時候也比較有效率。</p><p>  其實在這次課程設(shè)計的過程中,我也遇到了很多難題。在種種的困難中,我明白了耐心在編寫程序時的重要性。如果你沒有耐心就肯定編不出好的

74、程序,特別是在調(diào)試的過程中。我們初次寫的程序在電腦上調(diào)試的時候也許會出項幾百個錯誤,這時候我們應(yīng)該耐心的檢查出錯的地方和原因,并予以改正。而不是抱怨自己寫的程序太爛錯誤太多,就此放棄。相信再強的人也不可能一次就能編譯成功,總會有一些問題出現(xiàn)。其實只要有耐心,你就會發(fā)現(xiàn),在你修改了一個錯誤之后,其它有的錯誤也會跟著消失,所以在編譯的時候一定要有耐心。</p><p>  這段時間的課程設(shè)計,我也認識到數(shù)據(jù)結(jié)構(gòu)是一門

溫馨提示

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

評論

0/150

提交評論