2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  C++課程設(shè)計實驗報告</p><p>  姓名 李然 學號0511590128 班級05115901 任課教師 肖亮 時間 9.24 </p><p>  教師指定題 3-5 求解方程 評定難易級別 A </p><p>  實驗報告成績 </p>&

2、lt;p><b>  .實驗內(nèi)容:</b></p><p>  1.1 程序功能介紹</p><p>  用因式分解的方法求解方程ax^n+bx^(n-1)+ ……+cx+k的根。方法是根據(jù)方程的第一項與最后一項(常數(shù)項),求解方程的一個根。具體做法是:a是一個能整除第一項系數(shù)的整數(shù),k是一個能整除常數(shù)項的數(shù),將所有的(k/a)代入方程,檢驗是否為方程的根,如果

3、是,則把方程除以(x-k/a)得到新方程,即降階。對新方程重復以上步驟,直到首項為x^2,再利用二次方程的算法求解出方程的實根或虛根。</p><p>  1.2 程序設(shè)計要求</p><p> ?。?)定義一個方程類,將與方程有關(guān)的數(shù)據(jù)和操作封裝到類中,并改寫主程序結(jié)構(gòu),使程序可以反復運行。</p><p> ?。?)擴充其功能,使該程序能求解冪n=6或更高次冪,

4、也可求解線性方程。</p><p> ?。?)增加功能,使程序既可以從鍵盤中讀入方程,也可以由文件中讀入方程。</p><p>  2.源程序結(jié)構(gòu)流程框圖與說明(含新增子函數(shù)的結(jié)構(gòu)框圖)</p><p><b>  3.基本數(shù)據(jù)結(jié)構(gòu)</b></p><p>  class Equ{ //方程的類</p>

5、<p>  char terms[100][40]; //每一項數(shù)的指針 </p><p>  char equ[5000]; //方程</p><p>  int n,numbers; //n為方程的階數(shù),numbers為方程的項數(shù)</p><p><b>  public:</b></p><

6、;p>  Equ(char*); //構(gòu)造函數(shù)</p><p>  void InputFromFile(); //從文件輸入方程</p><p>  void getfactorsof(int *factor_list,int &num,int val);//將val項的整數(shù)因子放入數(shù)組factor_list中</p><p>  vo

7、id getterm(char *src,char *dest,int &loc);//從字符串scr的第loc個字符起復制一個完整的項到字符串</p><p>  void reduceequbyfactor(char *base,char *newequ,float factor);//降階</p><p>  void gettermforpower(char *equ,ch

8、ar *dest,int power);//將階數(shù)為power的項數(shù)復制到dest</p><p>  int getcoeff(char *term); //返回一項的系數(shù)</p><p>  float getcoeff_f(char *term); //取得一項的系數(shù)</p><p>  int getdegreeofterm(char *ter

9、m); //返回term這項的x的階數(shù) </p><p>  int remaindertheorem(char *equ,float root); //判斷root是否為方程的解 ,不是返回1</p><p>  int exp(int,int); //求解val的e次冪</p><p>  float exp(float val,int e);

10、 //求解val的e次冪</p><p>  float forallfactors(int *a,int *k,int n_a,int n_k,char *equ); //驗根 </p><p>  float calcequval(char*,float); //得出val代入x后該項的數(shù)值 </p><p>  void qiujie()

11、; //主要操作過程</p><p>  void quadraticequation(int a,int b,int c);//求解一元二次方程</p><p>  void qiuyicifangcheng(int b,int c); //求解線性方程</p><p>  void qiulingcifangcheng(char *t) //

12、求解0次方程</p><p><b>  {</b></p><p>  if(t[0]=='0'&&t[1]=='\0') //若方程為0=0,解為全體實數(shù)</p><p>  cout<<"全體實數(shù)!"<<endl;</p>&

13、lt;p>  else cout<<"無解!"<<endl; //若方程為一個非零常數(shù)等于零,無解</p><p><b>  }</b></p><p><b>  };</b></p><p>  4.程序運行結(jié)果界面 </p><p>&

14、lt;b>  圖1. 初始界面</b></p><p><b>  圖2. 運行界面</b></p><p>  5. 課程設(shè)計遇到的技術(shù)問題與解決思路</p><p>  問題1: 該程序設(shè)計的關(guān)鍵是將算法推廣,原程序只適用于求x?5階數(shù)的方程,現(xiàn)在要求能求解冪n=6或更高次冪。</p><p> 

15、 解決辦法: 將原程序中用于放置x的項數(shù)的數(shù)組terms和方程解的固定數(shù)組roots該成動態(tài)數(shù)組,即根據(jù)輸入方程項數(shù)的最高階來決定具體的數(shù)組維數(shù),需要在輸入方程后進行判斷。這一部分的代碼如下:</p><p>  if(strchr(ex,'x')!=NULL){ </p><p>  if(strchr(ex,'^')!=NULL){ </p>

16、<p>  for(int i=0;ex[i]!='^';i++); //跳過第一項的系數(shù)、x和`^`,找到`^` 后的字符,即為階數(shù)最高項的階數(shù) </p><p><b>  i++;</b></p><p>  n=(int

17、(ex[i]-'0')) //將字符轉(zhuǎn)化為數(shù)值,即最高階項階數(shù),將值賦給n</p><p><b>  }</b></p><p><b>  else</b></p><p>  n=1; //方程里沒有字符`^`,方程為一次,即n=1</p><p><b>

18、  }</b></p><p><b>  else</b></p><p>  n=0; //方程里沒有x,方程為0次,即n=0</p><p>  要求還要求解線性方程,這部分主要是在求解一元二次方程時實現(xiàn)的,代碼如下:</p><p>  void Equ::qiuyicifangcheng(in

19、t b,int c)</p><p><b>  {</b></p><p>  cout<<-(float)c/(float)b<<endl;</p><p><b>  } </b></p><p>  函數(shù)調(diào)用時b和c的值通過求系數(shù)的函數(shù)確定</p>&

20、lt;p>  問題2:文件中讀取方程</p><p>  解決辦法:從眾多C++書中讀取相關(guān)資料并找到如下程序:</p><p>  從文件輸入:void:InputFromFile()</p><p><b>  {</b></p><p>  ifstream ins;char equation[256];co

21、ut<<"請輸入文件名: "<<endl;cin>>equation;</p><p>  ins.open(equation,ios::in|ios::nocreate);</p><p>  if(ins.fail())</p><p><b>  {</b></p>&

22、lt;p>  cerr<<"該文件不存在!"<<endl;</p><p>  system("pause");exit(1);</p><p><b>  }</b></p><p>  for(int i=0; i<(n+1)&&equ[loc]!=

23、'='&&equ[loc]!='\0'&&equ[loc]!='\n';i++)</p><p>  getterm (equ,terms[i],loc);numbers=i; </p><p>  ins.close();}</p><p><b>  }</b>

24、</p><p>  經(jīng)過幾天的研究,程序終于像一座冰山一樣開始慢慢融化,終于明白了程序的大體意思,但是有幾個函數(shù)是從來沒用過的,所以設(shè)計思路卻是一團亂麻,不知道應該從何處下手,經(jīng)過幾天的苦思冥想,進展還是不大,只能向老師和同學請教,有時間就到圖書館去,那里有許多c++的參考書,我邊看書邊做。好不容易程序做出來一點頭緒,不過這個程序還真是困難重重。通過這次課程設(shè)計,我學到了許多課本上學不到的知識。更加鍛煉了我的毅

溫馨提示

  • 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

提交評論