數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---多項(xiàng)式問題_第1頁
已閱讀1頁,還剩9頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)</b></p><p>  課程設(shè)計(jì)題目: 多 項(xiàng) 式 問 題 </p><p><b>  目 錄</b></p><p>  一、問題描述--------------------------------------------3</p><p

2、>  二、需求分析--------------------------------------------4</p><p>  三、概要設(shè)計(jì)--------------------------------------------4</p><p>  1.概要設(shè)計(jì)目的與要求---------------------------------4</p><p>

3、  2.概要設(shè)計(jì)內(nèi)容---------------------------------------4</p><p>  3.功能算法描述與數(shù)據(jù)結(jié)構(gòu)說明-------------------------5</p><p>  四、詳細(xì)設(shè)計(jì)--------------------------------------------5</p><p>  五、系統(tǒng)測試---

4、-----------------------------------------8</p><p>  六、使用說明--------------------------------------------9</p><p>  七、總結(jié)及心得體會(huì) ------------------------------------10</p><p><b>  多

5、項(xiàng)式問題</b></p><p><b>  一.問題描述</b></p><p>  給你九個(gè)整數(shù),這九個(gè)整數(shù)分別是x的8次方至0次方的系數(shù),請你按照多項(xiàng)式的一半形式合理地構(gòu)造(去除不必要的)。例如九個(gè)系數(shù)分別是為0,0,0,1,22,-333,0,1,-1,你要構(gòu)造并輸出一行多項(xiàng)式:x^5 + 22x^4 – 333x^3 + x – 1。</p

6、><p><b>  它的格式規(guī)則如下:</b></p><p>  1.多項(xiàng)式的項(xiàng)必須按其指數(shù)從高到低排列。</p><p>  2.指數(shù)必須跟在符號(hào)“^”后顯示。</p><p>  3.有常數(shù)的只顯示常數(shù)項(xiàng)(無需跟x^0)。</p><p>  4.只顯示系數(shù)不為0的項(xiàng);若系數(shù)全為0,需顯示常數(shù)

7、項(xiàng)。</p><p>  5.在多項(xiàng)式中唯一需要空格的地方是項(xiàng)與項(xiàng)之間的加號(hào)或減號(hào)的兩邊需加上空格。</p><p>  6.如果首項(xiàng)的系數(shù)是正數(shù),則系數(shù)前不加符號(hào);如果首項(xiàng)的系數(shù)是負(fù)數(shù),則符號(hào)與數(shù)字之間不加空格,就如:-3x^2 + -2x。</p><p>  7.系數(shù)為1,指數(shù)為0時(shí),系數(shù)的1才顯示(推廣到系數(shù)為-1)。</p><p>

8、;<b>  輸入/輸出說明</b></p><p>  1.輸入/輸出方式為文件方式,輸入文件有一行或多行的系數(shù),系數(shù)之間有空格分隔。</p><p>  2.每行共有九個(gè)系數(shù),每個(gè)系數(shù)的絕對(duì)值為小于1000的整數(shù)。輸出文件包含構(gòu)造完地多項(xiàng)式,每行一個(gè)多項(xiàng)式。</p><p><b>  輸入范例</b></p&g

9、t;<p>  0 0 0 1 22 -333 0 1 -1</p><p>  0 0 0 0 0 0 -55 5 0</p><p><b>  輸出范例</b></p><p>  x^5 + 22x^4 – 333x^3 + x – 1</p><p>  -55x^2 + 5x</p>

10、<p><b>  二.需求分析</b></p><p><b>  2.1可行性研究</b></p><p>  該程序主要從技術(shù)的角度來分析可行性。技術(shù)上的可行性研究主要分析技術(shù)條件能否順利完成開發(fā)工作,硬、軟件能否滿足開發(fā)者的需要等。該系統(tǒng)采用了Windows 7操作系統(tǒng)結(jié)合Visual C++ 6.0等軟件開發(fā)平臺(tái)已成熟可行

11、。硬件方面,科技飛速發(fā)展的今天,硬件更新的速度越來越快,容量越來越大,可靠性越來越高,其硬件平臺(tái)也比較能滿足此系統(tǒng)的需要。</p><p>  2.2結(jié)構(gòu)與主要功能模塊</p><p>  從實(shí)現(xiàn)多項(xiàng)式輸出過程的角度來分析,至少需要這樣一些子功能模塊。如:</p><p>  1. 多項(xiàng)式創(chuàng)建功能;</p><p>  2. 多項(xiàng)式輸出功能;

12、</p><p>  3. 釋放多項(xiàng)式功能;</p><p>  4. 操作界面顯示功能;</p><p><b>  三.概要設(shè)計(jì)</b></p><p>  1.概要設(shè)計(jì)目的與要求</p><p>  通過多項(xiàng)式程序設(shè)計(jì),使我們進(jìn)一步掌握和利用C++語言進(jìn)行結(jié)構(gòu)化程序設(shè)計(jì)的能力;進(jìn)一步理解和運(yùn)

13、用結(jié)構(gòu)化程設(shè)計(jì)的思想和方法;初步掌握開發(fā)一個(gè)小型系統(tǒng)程序設(shè)計(jì)的基本方法;學(xué)會(huì)調(diào)試一個(gè)較長程序的基本方法;以及掌握書寫課程設(shè)計(jì)開發(fā)文檔的能力(書寫課程設(shè)計(jì)報(bào)告)??傊?,通過本課程設(shè)計(jì)加深對(duì)《C++語言》及《數(shù)據(jù)結(jié)構(gòu)》課程所學(xué)知識(shí)的理解,進(jìn)一步鞏固C++語言語法規(guī)則,在程序中體現(xiàn)出算法的思想,提高程序的運(yùn)行效率。學(xué)會(huì)編制結(jié)構(gòu)清晰、風(fēng)格良好、數(shù)據(jù)結(jié)構(gòu)適當(dāng)?shù)腃++語言程序,從而具備解決綜合性實(shí)際問題的能力。</p><p&g

14、t;<b>  2.概要設(shè)計(jì)內(nèi)容</b></p><p>  多項(xiàng)式輸出程序具有以下基本功能:</p><p>  1.創(chuàng)建多項(xiàng)式。接收輸入的數(shù)據(jù),并保存到鏈表中。</p><p>  2.Txt文檔輸入輸出功能。</p><p>  3. 清除內(nèi)存內(nèi)容,釋放創(chuàng)建的鏈表,退出程序。</p><p>

15、;  3.功能算法描述與數(shù)據(jù)結(jié)構(gòu)說明</p><p>  該多項(xiàng)式程序除了main()函數(shù)外,主要有以下函數(shù):</p><p>  node *CreatePolyn()</p><p>  void firstnode(node *p)</p><p>  void othernode(node *p)</p><p&g

16、t;  void PrintPolyn(node *Pa)</p><p>  void deletechain(node *h)</p><p>  下面對(duì)這些函數(shù)逐一介紹。</p><p> ?、?main()函數(shù)</p><p>  main函數(shù)主要調(diào)用其他函數(shù),用來實(shí)現(xiàn)輸入、顯示功能。</p><p>  在

17、main()函數(shù)中,定義一維數(shù)組p[]用來保存多項(xiàng)式的系數(shù),Pa定義程序所需鏈表的頭指針。在程序開始要求輸入多項(xiàng)式的系數(shù),隨后創(chuàng)建鏈表以保存多項(xiàng)式,再顯示出構(gòu)建的符合要求的多項(xiàng)式。</p><p> ?、?node *CreatePolyn()</p><p>  該函數(shù)功能是創(chuàng)建新的多項(xiàng)式鏈表。使用for語句,控制輸入多項(xiàng)式的每一項(xiàng)。</p><p> ?、?vo

18、id firstnode(node *p)</p><p>  該函數(shù)功能是判斷輸出多項(xiàng)式第一項(xiàng)。對(duì)于第一項(xiàng)的系數(shù)為1或-1,指數(shù)為0或-1等五種情況進(jìn)行討論。</p><p>  ④.void othernode(node *p)</p><p>  該函數(shù)功能是判斷輸出多項(xiàng)式除第一項(xiàng)外的其它項(xiàng)。對(duì)于第一項(xiàng)的系數(shù)為1或-1,指數(shù)為0或-1等五種情況進(jìn)行討論。<

19、;/p><p>  ⑤.void PrintPolyn(node *Pa)</p><p>  該函數(shù)功能:顯示構(gòu)造的符合要求的多項(xiàng)式鏈表。在該函數(shù)中調(diào)用③、④函數(shù),進(jìn)行多項(xiàng)式的輸出。</p><p> ?、?void deletechain(node *h)</p><p>  該函數(shù)的功能是釋放掉創(chuàng)建的鏈表,釋放內(nèi)存。</p>

20、<p><b>  。</b></p><p><b>  四.詳細(xì)設(shè)計(jì)</b></p><p>  下面討論重要函數(shù)具體實(shí)現(xiàn)過程:</p><p>  1. node *CreatePolyn() 定義int i=9計(jì)數(shù),當(dāng)i>0時(shí),for語句反復(fù)提示用戶輸入該多項(xiàng)式的每一項(xiàng)的指數(shù)。當(dāng)i=1時(shí),輸入完

21、畢,該鏈表也創(chuàng)建完畢。詳細(xì)的實(shí)現(xiàn)過程如下:</p><p>  node *CreatePolyn()</p><p><b>  {</b></p><p>  node *head,*pa,*s;</p><p><b>  int i; </b></p><p>  p

22、a=head=new node;//創(chuàng)建一個(gè)新的結(jié)點(diǎn)</p><p>  head->next=NULL;</p><p>  for (i = 9; i >0;i--) // 依次輸入9項(xiàng) </p><p><b>  {</b></p><p>  s=new node;</p><p

23、>  s->next=NULL;</p><p>  s->coef = p[9-i];</p><p>  s->exp=i-1;//x指數(shù)從8遞減到0</p><p>  if(s->coef !=0)//系數(shù)不為零時(shí),結(jié)點(diǎn)p鏈接s</p><p><b>  {</b></p&g

24、t;<p>  pa->next=s;</p><p><b>  pa=s;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  return head;</p><p>&l

25、t;b>  }</b></p><p>  2. void firstnode(node *p) 對(duì)多項(xiàng)式第一項(xiàng)輸出可能性進(jìn)行多種分類討論。</p><p>  void firstnode(node *p)//輸出多項(xiàng)式第一個(gè)結(jié)點(diǎn)</p><p><b>  {</b></p><p>  //指數(shù)不

26、為1且不為0,系數(shù)絕對(duì)值不為1(正常的輸出)</p><p>  if(p->exp!=1&&p->exp&&fabs(p->coef)!=1)</p><p><b>  {</b></p><p>  if(p->coef>0)</p><p><

27、b>  {</b></p><p>  outfile<<p->coef<<"X^"<<p->exp;</p><p><b>  }</b></p><p><b>  else</b></p><p><

28、b>  {</b></p><p>  outfile<<p->coef<<"X^"<<p->exp;</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(p-

29、>exp==0)//指數(shù)為0,即常數(shù)項(xiàng)</p><p><b>  {</b></p><p>  if(p->coef>0)</p><p><b>  {</b></p><p>  outfile<<p->coef;</p><p>

30、<b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  outfile<<p->coef;</p><p><b>  }</b></p><p

31、><b>  }</b></p><p>  //指數(shù)大于0且不為1,系數(shù)絕對(duì)值為1</p><p>  if(p->exp>0&&fabs(p->coef)==1&&p->exp!=1)</p><p><b>  {</b></p><

32、p>  if(p->coef>0)</p><p><b>  {</b></p><p>  outfile<<"X^"<<p->exp;</p><p><b>  }</b></p><p><b>  else&l

33、t;/b></p><p><b>  {</b></p><p>  outfile<<"-X^"<<p->exp;</p><p><b>  }</b></p><p><b>  }</b></p>

34、<p>  if(p->exp==1&&fabs(p->coef)!=1)//指數(shù)為1且系數(shù)絕對(duì)值不為1</p><p><b>  {</b></p><p>  if(p->coef>0&&p->coef!=1)</p><p><b>  {</b&g

35、t;</p><p>  outfile<<p->coef<<"X";</p><p><b>  }</b></p><p>  if(p->coef<0&&p->coef!=-1)</p><p><b>  {</b

36、></p><p>  outfile<<p->coef<<"X";</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(p->exp==1&&fabs(p->c

37、oef)==1)//指數(shù)為1且系數(shù)絕對(duì)值為1</p><p><b>  {</b></p><p>  if(p->coef==1)</p><p>  outfile<<"X";</p><p><b>  else</b></p><p

38、>  outfile<<"-X";</p><p><b>  }</b></p><p><b>  }</b></p><p>  3. void PrintPolyn(node *Pa) 該函數(shù)有一個(gè)參數(shù),該指針指向多項(xiàng)式鏈表的頭指針,以下是實(shí)現(xiàn)插入的關(guān)鍵代碼:</p&

39、gt;<p>  void PrintPolyn(node *Pa)</p><p><b>  {</b></p><p><b>  node *p;</b></p><p>  if(Pa->next==NULL)//首項(xiàng)判斷,如果首項(xiàng)無,則顯示“0”</p><p>

40、;  outfile<<"0";</p><p><b>  return;</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  firstnode(Pa->next);<

41、/p><p><b>  }</b></p><p>  p=Pa->next->next;//定義指針p指向Pa的下下個(gè)指針</p><p>  while(p!=NULL)</p><p><b>  {</b></p><p>  othernode(p);

42、</p><p>  p=p->next;//將p指向下個(gè)一個(gè)結(jié)點(diǎn)</p><p><b>  }</b></p><p>  outfile<<endl;</p><p><b>  }</b></p><p><b>  五.系統(tǒng)測試&l

43、t;/b></p><p>  該程序在VC6.0中調(diào)試通過,沒有錯(cuò)誤和警告,運(yùn)行結(jié)果經(jīng)過檢驗(yàn)為正確。以下圖為該程序運(yùn)行結(jié)果效果圖:</p><p><b>  圖5-1 范例</b></p><p><b>  圖5-2 一行輸出</b></p><p><b>  圖5-3 多行

44、輸出</b></p><p><b>  六.使用說明</b></p><p>  1.打開1.txt文件,在里面任意輸入9個(gè)整數(shù),每個(gè)數(shù)字間要有空格,可以輸入一行或者多行,輸入多行的時(shí)候需要換行。</p><p>  2.編譯運(yùn)行后,打開2.txt文件,即可看到輸出的符合要求的多項(xiàng)式。</p><p>&l

45、t;b>  七.總結(jié)及心得體會(huì)</b></p><p>  通過這次課程設(shè)計(jì)練習(xí),使我更深刻地理解了C++語言的精髓-----指針的使用。完成整個(gè)程序設(shè)計(jì)有很大的收獲,對(duì)指針掌握的更加熟練。</p><p>  同時(shí)通過直接對(duì)單鏈表的操作,加深了對(duì)數(shù)據(jù)結(jié)構(gòu)的理解和認(rèn)識(shí)。并在完成課程設(shè)計(jì)的過程作主動(dòng)查閱了相關(guān)資料,學(xué)到了不少課本上沒有的技術(shù)知識(shí)。</p>&l

46、t;p>  經(jīng)過這次課程設(shè)計(jì),我深刻認(rèn)識(shí)到算法在程序設(shè)計(jì)中的重要性,如何讓程序簡單、易讀是這個(gè)課程設(shè)計(jì)的難點(diǎn)。程序總是由若干個(gè)函數(shù)構(gòu)成的,這些相應(yīng)的函數(shù)體現(xiàn)了算法的基本思想。</p><p>  編程是一件枯燥乏味工作,但是只要認(rèn)真專研,我們會(huì)從中學(xué)到很多在課本上學(xué)不到或者無法在課堂上掌握的知識(shí),同時(shí)也能從中感受到編程的樂趣。興趣是可以培養(yǎng)的,只要堅(jiān)持下去,面對(duì)困難我們總能夠找到解決問題的方法。</p

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論