數(shù)據(jù)結(jié)構(gòu)課程設計---一元多項式_第1頁
已閱讀1頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  一元多項式計算</b></p><p> 班級:信息本1002學號:09姓名:</p><p> 班級:信息本1002學號:26姓名:</p><p> 班級:信息本1002學號:34姓名:</p><p> 班級:信息本1002學號:41姓名:</p><p>&l

2、t;b>  目 錄</b></p><p><b>  一、課題任務1</b></p><p><b>  二、概要設計1</b></p><p><b>  三、詳細設計2</b></p><p><b>  四、調(diào)試分析6</b

3、></p><p><b>  五、測試結(jié)果6</b></p><p>  六、課程設計總結(jié)9</p><p><b>  七、參考文獻9</b></p><p><b>  八、附錄10</b></p><p><b>  一、

4、課題任務</b></p><p>  功能: 1).能夠按照指數(shù)降序排列建立并輸出多項式;</p><p>  2).能夠完成兩個多項式的相加,并將結(jié)果輸出;</p><p>  3).能根據(jù)輸入的多項式及變量的值,能進行計算。并輸出計算結(jié)果。</p><p>  4).能對多個輸入的表達式按照指數(shù)大小排序輸出。</p&

5、gt;<p><b>  二、概要設計</b></p><p><b>  三、詳細設計</b></p><p>  一元多項式定義系數(shù)和指數(shù)結(jié)構(gòu)如下: </p><p>  coef域--存放結(jié)點的系數(shù)值</p><p>  expn域--存放結(jié)點的指數(shù)值</p>&l

6、t;p>  next域--存放結(jié)點的直接后繼的地址(位置)的指針域(鏈域)</p><p>  一元多項式單鏈表存儲結(jié)構(gòu):</p><p>  typedef struct term </p><p>  { float coef; //系數(shù) </p><p>  int expn; //指數(shù) </p><

7、;p>  struct term *next; </p><p><b>  }term;</b></p><p>  有了鏈表特定的數(shù)據(jù)類型term,接下來就需要建立這個鏈表。這里我們自定義一個構(gòu)造函數(shù)CreatePoly()來構(gòu)造鏈表。首先定義一個term型的指針變量h=p作為頭結(jié)點,存儲多項式的信息(項數(shù)),為h分配存儲空間建立一個頭結(jié)點并為其數(shù)據(jù)域賦值,

8、分配存儲空間用malloc()函數(shù)來實現(xiàn);這時輸入多項式的項數(shù)m,先給p的coef賦值為0,此時利用一個for循環(huán)將p鏈表的coef與expn值從鍵盤輸入,用m來控制循環(huán)的次數(shù),若該從鍵盤輸入的coef值不為0,則將該數(shù)值插入鏈表新建鏈表q,用malloc()分配給p空間,p=p->next繼續(xù)從鍵盤輸入coef與expn的值,直到滿足p->next=null,輸入完成,返回鏈表q即為多項式的系數(shù)與指數(shù),創(chuàng)建多項式完成。&l

9、t;/p><p>  在處理多項式相加的問題上,由于事先建立的多項式函數(shù)已經(jīng)按指數(shù)大小排好序,那么多項式的相加就變得不那么復雜了,我們只要找出兩個相加多項式指數(shù)相同的項進行合并,即將指數(shù)相同的項的系數(shù)相加,其它的保持不變存好即可。而查找指數(shù)相同的項,只要按鏈表從頭到尾進行掃描,若發(fā)現(xiàn)相同,則兩個同時往下移,否則只將其中指數(shù)較大的往下移。假若兩個指數(shù)相同的項進行合并時,其系數(shù)相加值為0,則消除該項,繼續(xù)下去。</

10、p><p>  在處理輸入的多項式及變量的值計算結(jié)果的問題時,定義一個C()函數(shù)實現(xiàn),需要定義一個float變量sum來存儲和值,再引用一個pow()函數(shù)來計算多項式的和,利用一個for循環(huán)來一一計算x的q->expn次方后與q->coef相乘的值,并存儲在sum中,q=q->next,直到q->next =unll,跳出for循環(huán),返回 sum的值就是多項式在用x賦值后的值。</p&g

11、t;<p>  對多個輸入的表達式按照指數(shù)從大到小排序輸出:,利用一個for(包含兩個函數(shù)CreatPolyn(M,n);selsort(M);)循環(huán),用scanf()輸入k來控制for的次數(shù)可控制輸入的多項式個數(shù),并一個trem型數(shù)組G[i]來保存每一個多項式,方便后來的按最高指數(shù)大小排序。排序的思想利用枚舉排序法可將每個多項式最高次expn按從大到小排列并保存在G[i]數(shù)組中,再次利用for將排序好的G[i]多項式按指

12、數(shù)從大到小輸出。</p><p>  具體子功能流程圖如下:</p><p><b>  多項式的計算</b></p><p>  多項式的建立 </p><p>  多個多項式排序

13、 多項式相減</p><p>  輸出多項式q流程圖:</p><p><b>  N</b></p><p><b>  Y</b></p><p><b>  N</b></p><p><b>  Y<

14、;/b></p><p><b>  Y</b></p><p>  N </p><p><b>  Y</b></p>&

15、lt;p><b>  N</b></p><p><b>  Y</b></p><p><b>  N</b></p><p><b>  Y</b></p><p><b>  N</b></p><

16、p>  多項式輸出主要是對已建立的多項式按鏈表從頭到尾掃描指數(shù)跟系數(shù)進行多重判斷,根據(jù)指數(shù)和系數(shù)輸出相應的數(shù)值與符號,直到多項式輸出完成。</p><p><b>  四、調(diào)試分析</b></p><p>  程序的調(diào)試是程序順利完成中非常關(guān)鍵的一步。通過程序的調(diào)試分析可以解決程序的運行錯誤也可以對程序的性能進行分析。這個多項式運算問題研究的程序最重要的就是看輸

17、出的鏈表是否正確,是否帶有空結(jié)點,運行結(jié)果輸出是否正確。決定程序成功與否的第一步是定義的CreatPolyn()函數(shù)操作是否正確,如果這一步中出現(xiàn)錯誤,那么接下來的操作可以說是錯上加錯。在調(diào)試的時候可以在程序中加入刪除、釋放空結(jié)點操作,此操作是由Delet()與free()函數(shù)完成的,若輸出的多項式?jīng)]有空結(jié)點說明函數(shù)正確,可以繼續(xù)向下進行。接下來就是函數(shù)相加,控制此操作的關(guān)鍵是一個A ()函數(shù),其中調(diào)用APolyn()函數(shù)是決定成功與否

18、的關(guān)鍵,而函數(shù)的相減正是相加一個負數(shù),將減數(shù)多項式的coef變?yōu)樨撝当銓崿F(xiàn)了多項式的相減??梢韵仍诒旧蠈懗鰞蓚€正確的簡單的多項式,使其具有相加后出現(xiàn)空結(jié)點的特點,然后變換循環(huán)變量的范圍,當輸出吻合時則說明操作正確。對于根據(jù)輸入的多項式及變量的值進行計算,控制此操作的關(guān)鍵是如何計算多項式中多次方的值,此操作關(guān)鍵是一個C()函數(shù),調(diào)用pow()函數(shù)來實現(xiàn)計算次方的功能,其中sum值的計算是否正確起關(guān)鍵作用。</p><p

19、>  下面我們分析一下程序的性能。在主函數(shù)中,首先調(diào)用構(gòu)造單鏈表函數(shù)CreatePoly(),在這個函數(shù)中需要通過一個for循環(huán)為每個結(jié)點分配存儲空間,變換節(jié)點的next域,時間復雜度為O(n)。接下來執(zhí)行selsort()函數(shù)對多項式進行按指數(shù)排序,其中一個雙重for循環(huán),在內(nèi)部的for循環(huán)中是對相鄰結(jié)點指數(shù)大小比較進行操作,所以每個結(jié)點的操作都需要m次,共n個結(jié)點,則需要mn次操作,時間復雜度為O(nn)。其后的for循環(huán)是比

20、較將指數(shù)相同的數(shù)進行合并,時間復雜度為O(n)。</p><p><b>  五、測試結(jié)果</b></p><p>  系統(tǒng)選擇界面如圖 6-1</p><p><b>  圖6-1</b></p><p>  測試按照指數(shù)降序排列輸出多項式 8*x^1+9*x^0+7*x^2+6*x^3 <

21、;/p><p><b>  輸入數(shù)據(jù)為:</b></p><p><b>  1(enter)</b></p><p><b>  4(enter)</b></p><p>  8 1 9 0 7 2 6 3(enter)</p><p>  輸出結(jié)果為:6

22、*x^3+7*x^2+8*x^1+9</p><p><b>  測試結(jié)果如圖6-2</b></p><p><b>  圖6-2</b></p><p>  測試兩個多項式相加8*x^1+9*x^0+7*x^2+6*x^3; 0*x^0+1*x^3+5*x^2;</p><p><b>

23、;  輸入數(shù)據(jù)為:</b></p><p><b>  2(enter)</b></p><p><b>  4(enter)</b></p><p>  8 1 9 0 7 2 6 3 (enter)</p><p><b>  3(enter)</b></

24、p><p>  0 0 1 3 5 2(enter)</p><p>  輸出結(jié)果為:7x^3+12x^2+8x+9</p><p><b>  測試結(jié)果如圖6-3</b></p><p><b>  圖6-3</b></p><p>  輸入的多項式及變量的值計算結(jié)果測試<

25、;/p><p>  測試多項式4x^3+5x^4+6x^1+7x^0 當x值為2.5時的值為279.8125</p><p><b>  輸入數(shù)據(jù)為:</b></p><p>  4(enter) 4(enter)</p><p>  4 3 5 4 6 1 7 0(enter)</p><p> 

26、 2.5(enter)</p><p><b>  測試結(jié)果如圖6-4</b></p><p><b>  圖6-4</b></p><p>  測試對多個輸入的表達式按照指數(shù)從大到小排序輸出</p><p>  測試多項式8*x^1+9*x^0+7*x^2+6*x^3; 0*x^0+1*x^3+5

27、*x^2;4x^3+5x^4+6x^1+7x^0</p><p><b>  輸入數(shù)據(jù)為:</b></p><p>  5(enter) 3(enter) </p><p>  4(enter) 8 1 9 0 7 2 6 3 (enter)</p><p>  3(enter) 0 0 1 3 5 2 (enter

28、)</p><p>  4(enter) 4 3 5 4 6 1 7 0 (enter)</p><p>  輸出結(jié)果為:5x^4+4x^3+6x+7; 6*x^3+7*x^2^+8*x +9;x^3+5*x^2</p><p>  數(shù)組測試結(jié)果如圖6-5</p><p><b>  圖6-5</b></p>

29、<p><b>  六、課程設計總結(jié)</b></p><p>  計算一元多項式加法,其結(jié)果取決于多項式的各項系數(shù)與指數(shù),因此程序核心是處理兩個多項式的系數(shù)與指數(shù)。定義結(jié)構(gòu)體將多項式的各項系數(shù)與指數(shù)存放,定義結(jié)構(gòu)體類型鏈表為程序的循環(huán)控制提供了可能,利用對鏈表的運算來確定結(jié)果多項式的各項系數(shù)與次數(shù),同理算出相應的冪數(shù)。鏈表是在計算機內(nèi)存中使用一組連續(xù)的存儲單元保存數(shù)據(jù)類型和名字

30、相同的變量。就鏈表這種數(shù)據(jù)類型而言,在排列上采用的方法也是按序排放,先存放第一行,接著存放第二行,……,直到所有數(shù)據(jù)元素被存放。多項式采用的是鏈表形式,以犧牲一定的空間提高程序的運行速度和可行性。</p><p>  算法思想:采用鏈式結(jié)構(gòu)存儲多項式,用鏈表結(jié)構(gòu)體的一個域標記多項式的次數(shù),另一個域標記多項式的系數(shù),程序中采用的是m表示最高次系數(shù),進行加法運算時,標記系數(shù)域相加即為相加的對應系數(shù),標記指數(shù)域相同則表

31、示為同類項。</p><p>  鏈表的特性是在中間任意位置添加刪除元素的都非常的快,不需要移動其它的元素。鏈表顧名思義,要把各個元素鏈接起來才算撒。通常鏈表每一個元素都要保存一個指向下一個元素的指針(單鏈表)。</p><p>  本次課程設計,我查找過資料,請教過同學,以及不懈的努力,不僅培養(yǎng)了獨立思考、動手操作的能力,在各種其它能力上也都有了提高。更重要的是,在程序設計中,我學會了很

32、多學習的方法,而這是日后最實用的,真的是受益匪淺。本學期的程序設計課程,我鍛煉了能力,學到很多東西,比如思考問題的角度也會從多方面著手;對自己的專業(yè)也有自己的想法……在和同學的交流過程中,互動學習,將知識融會貫通。通過這次課程設計,我對很多的函數(shù)有了新的認識,也學會了運用多種函數(shù),我也明白了寫軟件的基本過程和基本方法。在程序的設計過程中遇到拉很多的困難,在程序一次一次的調(diào)試失敗下曾經(jīng)想過要放棄,我最后還是讓自己堅持啦下來,毫不畏懼困難,

33、在同學的幫助與講解下我總算是順利的完成了程序的課程設計。</p><p>  在這幾天的編寫過程中我對語言有了更進一步的認識和了解,也感受到了編程給我?guī)淼目鞓放c充實,明白了想成為一個合格的甚至是優(yōu)秀的程序員,我還需要更多更難的鍛煉。所以我還要不斷地學習不斷地說活,不斷地成長,為我的理想而奮斗。</p><p><b>  七、參考文獻</b></p>

34、<p>  1) 嚴蔚敏 吳偉民 《數(shù)據(jù)結(jié)構(gòu)(C語言版)》 清華大學出版社.2006.</p><p>  2) 恰汗 合孜爾 《C語言程序設計 》中國鐵道出版社2009.</p><p>  3) 楊永斌 《數(shù)據(jù)結(jié)構(gòu)(理論與實踐).》 天津科學技術(shù)出版社</p><p><b>  4) 百度資料</b></p>&l

35、t;p><b>  八、附錄</b></p><p>  #include<stdlib.h></p><p>  #include<stdio.h> </p><p>  #include<ctype.h> </p><p>  #include<iostream>

36、</p><p>  #include<math.h></p><p>  #define null 0</p><p>  #define W 10</p><p>  using namespace std;</p><p>  typedef struct term </p><p

37、>  { //項的表示,多項式的項作為LinkList的數(shù)據(jù)元素 </p><p>  float coef; //系數(shù) </p><p>  int expn; //指數(shù) </p><p>  struct term *next; </p><p><b>  }term; </b></p>&

38、lt;p>  int Empty(term *L)</p><p><b>  {</b></p><p>  if(L->next!=null)</p><p><b>  return 1;</b></p><p><b>  return 0;</b><

39、/p><p><b>  }</b></p><p>  void Delete(term * L,term * p)</p><p>  { term * s,*q;</p><p><b>  s=L;</b></p><p>  q=L->next;</p>

40、;<p>  while(p!=q)</p><p><b>  {s=q;</b></p><p>  q=q->next;}</p><p>  s->next=q->next;</p><p><b>  free(q);</b></p><

41、p>  } </p><p>  term* CreatPolyn(term *P,int m) </p><p>  { // 輸入m項的系數(shù)和指數(shù),建立表示一元多項式的有序鏈表P </p><p>  if(m <= 0) return NULL; </p><p

42、>  term *h = P = (term*)malloc(sizeof(term)), *q; </p><p>  P->coef = 0.0; </p><p><b>  int i; </b></p><p>  printf("依次輸入%d個數(shù)(前一個為系數(shù),后一個為指數(shù))\n",m*2); <

43、;/p><p>  for (i = 1; i <= m; ++i)</p><p>  { // 依次輸入m個非零項 </p><p>  scanf("%f%d",&P->coef,&P->expn); </p><p>  if(P->coef) </p><p

44、>  q = P; //若該系數(shù)值不為0,則p數(shù)值插入鏈表q</p><p>  P = P->next = (term*)malloc(sizeof(term)); </p><p><b>  } </b></p><p>  q->next = NULL; </p><p><b>  

45、free(P); </b></p><p>  return h; </p><p>  } // CreatPolyn </p><p>  term* selsort(term *h) </p><p>  { //將有序鏈表進行指數(shù)排列</p><p>  term *g, *p, *q; </

46、p><p>  if(!h) return NULL; </p><p><b>  float f; </b></p><p>  int i, fini = 1; </p><p>  for(g = h;g->next&&fini;g = g->next) //確定排序需要掃描的次數(shù) &

47、lt;/p><p>  { fini = 0; </p><p>  for(p = h,q = h->next;q;p = p->next,q = q->next) </p><p>  //相鄰的指數(shù)進行比較,一次循環(huán)將最小指數(shù)排到最后,若兩兩比較沒交換,則...</p><p>  if (p->e

48、xpn < q->expn) //將鏈表中的元素按指數(shù)從高到低排列</p><p>  { f = p->coef;i = p->expn; </p><p>  p->coef = q->coef;p->expn = q->expn; </p><p>  q->coef = f;q->expn

49、 = i; </p><p>  fini = 1; </p><p><b>  } </b></p><p><b>  } </b></p><p>  for(g = h,p = g->next;p;) //比較將指數(shù)相同的數(shù)進行合并</p><p>  if(

50、g->expn==p->expn) </p><p>  {g->coef += p->coef; </p><p>  g->next = p->next; //合并后跳過一個元素,并刪除該結(jié)點</p><p><b>  q = p; </b></p><p>  p = p-

51、>next; </p><p><b>  free(q); </b></p><p><b>  } </b></p><p><b>  else </b></p><p>  if(g->next) </p><p>  { g =

52、 g->next; </p><p>  p = p->next; </p><p><b>  } </b></p><p>  return h; </p><p><b>  } </b></p><p>  void PrintfPoly(term *P

53、) </p><p>  { //輸出按指數(shù)從大到小排列后的一元多次式</p><p>  term *q = P; </p><p><b>  if(!q) </b></p><p><b>  { </b></p><p>  putchar('0');

54、 </p><p><b>  return; </b></p><p><b>  } </b></p><p>  if(q->coef!=1) </p><p>  { printf("%g",q->coef); </p><p>  

55、//%g用來輸出實數(shù),它根據(jù)數(shù)值的大小,自動選f格式或e格式,且不輸出無意義的0</p><p>  if(q->expn==1) putchar('X'); //若指數(shù)值大小為1,則指數(shù)省略</p><p>  else if(q->expn) printf("X^%d",q->expn); </p><p&

56、gt;<b>  } </b></p><p>  else if(!q->expn) putchar('1'); </p><p>  else if(q->expn==1) putchar('X'); </p><p>  else printf("X^%d",q->ex

57、pn); </p><p>  q = q->next; </p><p>  while (q) </p><p><b>  { </b></p><p>  if(q->coef > =0) putchar('+'); </p><p>  if(q->

58、;coef!=1) </p><p><b>  { </b></p><p>  printf("%g",q->coef); </p><p>  if(q->expn==1) putchar('X'); </p><p>  else if(q->expn) pr

59、intf("X^%d",q->expn); </p><p><b>  } </b></p><p>  else if(!q->expn) putchar('1'); </p><p>  else if(q->expn==1) putchar('X'); </p&

60、gt;<p>  else printf("X^%d",q->expn); </p><p>  q = q->next; </p><p><b>  } </b></p><p><b>  } </b></p><p>  int Compare(

61、term *a, term *b) </p><p><b>  { </b></p><p>  if (a->expn < b->expn) return -1; </p><p>  if (a->expn > b->expn) return 1; </p><p>  retu

62、rn 0; </p><p><b>  } </b></p><p>  float C(term *c,float x) //計算輸入變量的多項式的值</p><p>  { float sum=0,a;</p><p><b>  int b;</b></p><p&

63、gt;  term *q=c;</p><p>  for(;q ;q=q->next)</p><p>  { a=q->coef ;b=q->expn ;</p><p>  sum+=a*pow(x,b);</p><p><b>  }</b></p><p>  re

64、turn sum;</p><p><b>  }</b></p><p>  term* APolyn(term *Pa, term *Pb) </p><p>  { // 多項式加法:Pa = Pa+Pb,利用兩個多項式的結(jié)點構(gòu)成"和多項式"。 </p><p>  term *h,

65、*qa = Pa, *qb = Pb, *p, *q; </p><p>  float sum; </p><p>  h = p = (term*)malloc(sizeof(term)); </p><p>  p->next = NULL; </p><p>  while (qa && qb) </p&g

66、t;<p>  { // Pa和Pb均非空 </p><p>  switch (Compare(qa,qb)) </p><p><b>  { </b></p><p>  case -1: // 多項式PA中當前結(jié)點的指數(shù)值小 </p><p>  p->next = qb; </p&

67、gt;<p><b>  p = qb; </b></p><p>  qb = qb->next; </p><p><b>  break; </b></p><p>  case 0: // 兩者的指數(shù)值相等 </p><p>  sum = qa->coef + q

68、b->coef; </p><p>  if (sum != 0.0)</p><p>  { // 修改多項式PA中當前結(jié)點的系數(shù)值 </p><p>  p->next = qa; </p><p>  qa->coef = sum; </p><p><b>  p = qa; &l

69、t;/b></p><p>  qa = qa->next; </p><p><b>  } </b></p><p><b>  else </b></p><p>  { // 刪除多項式PA中當前結(jié)點 </p><p><b>  q = qa

70、; </b></p><p>  qa = qa->next; </p><p><b>  free(q); </b></p><p><b>  } </b></p><p><b>  q = qb; </b></p><p> 

71、 qb = qb->next; </p><p><b>  free(q); </b></p><p><b>  break; </b></p><p>  case 1: // 多項式PB中當前結(jié)點的指數(shù)值小 </p><p>  p->next = qa; </p>

72、<p><b>  p = qa; </b></p><p>  qa = qa->next; </p><p><b>  break; </b></p><p>  } // 結(jié)束switch </p><p>  } // 結(jié)束while </p><p&

73、gt;  if (Pa) p->next = qa; // 鏈接Pa中剩余結(jié)點 </p><p>  if (Pb) p->next = qb; // 鏈接Pb中剩余結(jié)點 </p><p><b>  q = h; </b></p><p>  h = h->next; </p><p><b&g

74、t;  free(q); </b></p><p>  return h; </p><p>  } // APolyn </p><p>  term* A(term *Pa, term *Pb) </p><p>  { int n; </p><p>  printf("請輸入第二個

75、一元多項式的項數(shù): "); </p><p>  scanf("%d",&n); </p><p>  Pb = CreatPolyn(Pb,n); </p><p>  Pb = selsort(Pb); </p><p>  cout<<"兩個多項式相加結(jié)果為:";&

76、lt;/p><p>  PrintfPoly(Pa); </p><p>  if(Pb && Pb->coef>0) printf(" + "); </p><p>  PrintfPoly(Pb); </p><p>  Pa = APolyn(Pa,Pb); </p><p

77、>  printf(" = "); </p><p>  Pa = selsort(Pa); </p><p>  PrintfPoly(Pa); </p><p>  return Pa; </p><p><b>  }</b></p><p>  term* BPo

78、lyn(term *Pa, term *Pb)</p><p>  { // 多項式減法:Pa = Pa-Pb,利用兩個多項式的結(jié)點構(gòu)成"差多項式"。 </p><p>  term *p = Pb; </p><p><b>  while(p) </b></p><p>  { p-&g

79、t;coef *= -1; </p><p>  p = p->next; </p><p><b>  } </b></p><p>  return APolyn(Pa,Pb); </p><p>  } // BPolyn </p><p>  term* B(term *Pa, te

80、rm *Pb) </p><p>  { int n; </p><p>  printf("請輸入第二個一元多項式的項數(shù): ");</p><p>  scanf("%d",&n); </p><p>  Pb = CreatPolyn(Pb,n); </p>&

81、lt;p>  Pb = selsort(Pb);</p><p>  cout<<"兩個多項式相減結(jié)果為:";</p><p>  PrintfPoly(Pa); </p><p>  printf(" - "); </p><p>  putchar('(');Pri

82、ntfPoly(Pb);putchar(')'); </p><p>  Pa = BPolyn(Pa,Pb); </p><p>  printf(" = "); </p><p>  Pa = selsort(Pa); </p><p>  PrintfPoly(Pa); </p><

83、;p>  return Pa; </p><p><b>  } </b></p><p>  void main() </p><p>  { term *M,*N; </p><p><b>  term *q;</b></p><p>  int i,j,n

84、; </p><p>  float x,y;</p><p>  term *G[W];</p><p><b>  int k;</b></p><p>  f: puts("\t================ 一元多項式計算系統(tǒng):==================="); </p>

85、;<p>  printf("\n\t\t\t1:按照指數(shù)降序排列輸出多項式\n\t\t\t2:一元多項式的加法運算");</p><p>  printf("\n\t\t\t3:一元多項式的減法運算\n\t\t\t4:輸入的多項式及變量的值計算結(jié)果");</p><p>  puts("\n\t\t\t5:對多個輸入的表達式

86、按照指數(shù)從大到小排序輸出\n\t\t\t0:退出系統(tǒng)");</p><p>  puts("\t========================================================");</p><p>  printf("\n請選擇您要進行的操作:");</p><p><b>

87、;  cin>>i;</b></p><p>  switch(i) </p><p><b>  { </b></p><p><b>  case 1:</b></p><p>  printf("\n\t\t\t按照指數(shù)降序排列輸出多項式:\n請輸入該一元多項

88、式的項數(shù): "); </p><p>  scanf("%d",&n); </p><p>  M = CreatPolyn(M,n); </p><p>  M = selsort(M); </p><p>  cout<<"您輸入的多項式按指數(shù)降序排列為: ";<

89、;/p><p>  PrintfPoly(M);</p><p>  cout<<endl<<endl;</p><p><b>  goto f;</b></p><p><b>  case 2:</b></p><p>  printf("

90、\n\t\t\t一元多項式加法計算:\n請輸入第一個一元多項式的項數(shù): "); </p><p>  scanf("%d",&n); </p><p>  M = CreatPolyn(M,n); </p><p>  M = selsort(M); </p><p>  M = A(M,N);<

91、/p><p>  cout<<endl<<endl;</p><p><b>  goto f; </b></p><p><b>  case 3:</b></p><p>  printf("\n\t\t\t一元多項式減法計算:\n請輸入第一個一元多項式的項數(shù):

92、"); </p><p>  scanf("%d",&n); </p><p>  M = CreatPolyn(M,n); </p><p>  M = selsort(M);</p><p>  M = B(M,N);</p><p>  cout<<endl<

93、;<endl;</p><p><b>  goto f;</b></p><p><b>  case 4:</b></p><p>  printf("\n\t\t\t根據(jù)輸入的多項式及變量的值進行計算:\n請輸入您將要計算的一元多項式的項數(shù): "); </p><p&g

94、t;  scanf("%d",&n); </p><p>  M = CreatPolyn(M,n);</p><p>  M = selsort(M);</p><p>  cout<<"您輸入的一元多項式按指數(shù)降序排列為: ";</p><p>  PrintfPoly(M);

95、</p><p>  cout<<"\n請輸入變量x的值: ";</p><p>  scanf("%f",&x);</p><p><b>  y=C(M,x);</b></p><p>  printf("多項式的值為: %f\n",y

96、);</p><p>  cout<<endl<<endl;</p><p><b>  goto f;</b></p><p><b>  case 5:</b></p><p>  printf("\n\t\t\t對多個輸入的表達式按照指數(shù)大小排序輸出:\n請輸

97、入需要排序的一元多項式的個數(shù): "); </p><p>  scanf("%d",&k);</p><p>  for(i=0;i<k;i++)</p><p>  { printf("請輸入第%d個一元多項式的項數(shù): ",i+1);</p><p>  scanf(&q

98、uot;%d",&n); </p><p>  M = CreatPolyn(M,n); </p><p>  M = selsort(M);</p><p>  G[i]=M; //用數(shù)組記住每一個多項式</p><p><b>  }</b></p><p>  fo

99、r(j=0;j<k;j++)</p><p>  for(i=1;i<k;i++)</p><p>  if(G[i-1]->expn<G[i]->expn)</p><p>  { q=G[i];G[i]=G[i-1];G[i-1]=q;} </p><p>  printf("輸入的表達式按照指數(shù)

100、從大到小排序輸出結(jié)果為:\n");</p><p>  for(i=0;i<k;i++)</p><p>  { printf("\t%d: ",i+1);</p><p>  PrintfPoly(G[i]);</p><p>  cout<<endl;</p><p&

101、gt;<b>  } </b></p><p>  cout<<endl<<endl;</p><p><b>  goto f;</b></p><p><b>  case 0: </b></p><p><b>  break; &l

102、t;/b></p><p>  printf("=================謝謝您使用該系統(tǒng)!==================\n");</p><p>  default: puts("您輸入的數(shù)據(jù)有誤,請重新輸入!");</p><p><b>  goto f;</b></p

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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

提交評論