C課程設計求解有理數分式方程_第1頁
C課程設計求解有理數分式方程_第2頁
C課程設計求解有理數分式方程_第3頁
C課程設計求解有理數分式方程_第4頁
C課程設計求解有理數分式方程_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、湖南人文科技學院計算機系課程設計說明書 課 程 名 稱: C+程序設計 課 程 代 碼: 408025 題 目: 求解有理數分式方程 年級/專業(yè)/班:09級計算機科學與技術系軟件工程專業(yè)2班 學 生 姓 名: 谷其飛、王武娟、賀紅軍、艾準、周玉香 學 號: 09436210、09436211、9436212 09436213、09436214 指 導 教 師: 袁輝勇 開 題 時 間: 2010 年 9 月 16 日完 成 時 間: 2010 年 9 月 26 日 目 錄摘 要3一、引言2二、設計目的與任務21、本課程設計的目的22、本課程設計的任務2三、設計方案31、總體設計3、詳細設計43

2、、程序清單54、程序調試與體會75、運行結果8四、結論8五、參考文獻9摘 要 本課程設計的目的是通過定義分式類,在設計中我們采用多文件編程原理,利用#include命令來實現“文件包含”的操作,使程序更加清晰,明了。程序中我們將類的說明設計成.h頭文件,類的實現、主函數分開在不同的.cpp源文件中,這樣一來提高了程序代碼的重用和編程效率。關鍵字:多文件編程、類、構造函數、繼承、派生。Abstract This course is designed by defining point, line, area. Through the derived and to realize thinheri

3、ted other ways to reuse code for the triangle area. In the design, we adopt documents, include using the principle of programming commands to realize "#" operation documents contain more clearly, procedures, and clear. In the process, we will point, line, area, separated in different. CPP

4、source file, and each class has its header files, thus improving the program code reuse and programming efficiency.Key words:Many documents programming, kind, constructor, inheritance,derived.C+程序設計語言課程設計 求解有理數分式方程一、引言隨著人們生活水平的提高,計算機發(fā)展異常迅速。如今,計算機已經深入到我們社會的各個領域,計算機的使用也已不再局限于科學計算,它已進入人類社會的各個領域并發(fā)揮著越來越重

5、要的作用。通過計算機對各類問題求解已經成為一種高效、快捷的方式。本課程設計就是用類的繼承,派生等問題和實現代碼重用以及函數的調用等方式來提高編程效率的。二、設計目的與任務1、本課程設計的目的1)通過課程設計更進一步理解C+的基礎知識和面向對象的思想。2)訓練用系統(tǒng)的觀點和軟件開發(fā)一般規(guī)范進行軟件開發(fā),并在此過程中培養(yǎng)嚴謹的科學態(tài)度和良好的工作作風。初步掌握軟件開發(fā)過程的問題分析、系統(tǒng)設計、程序編碼、測試等基本方法和技能。3)熟練掌握C+中類及類所具備的功能在程序中的應用,并熟練了解類中函數的調用。2、本課程設計的任務 一、定義分式類,其中包含分子和分母。 二、實現功能:求解一元一次有理數分式方

6、程三、要求: 1、設計菜單實現功能選擇2、輸入功能:輸入有理數分式方程3、計算并輸出方程的根,并用最簡分式表示4、使用多文件方式設計:1)類的說明設計成.h頭文件2)類的實現為一個.cpp文件3)主函數為另一個.cpp文件 三、設計方案1、總體設計1)設計多個頭文件:conio.h;math.h;iostream.h等。2)定義類Fraction和FractionEquation ,對成員函數進行定義,并運用拷貝構造函數,析構函數,繼承及派生。3)設計多個函數并進行調用實現求解一元一次有理數分式方程、詳細設計2.1類接口設計void print();輸出函數void printX(); 輸出函

7、數,Fraction();無參構造函數Fraction(Fraction &other)拷貝構造函數virtual Fraction();析構函數void Simplify(); 分式簡化運算bool IsInteger();判斷分式是否表示一個整數(即分母是否為1)bool IsNegative();判斷分式是否表示一個負數FractionEquation();無參構造函數FractionEquation(int a,int b,int c,int d,int e,int f);/含6個參數的構造函數virtual FractionEquation();析構函數void DrawWa

8、rn():輸入參數函數;void DrawMenu()設計菜單實現功能選擇;Fraction Count();計算方程的根函數;void print();輸出方程函數;void printAnswer();輸出方程的根函數;switch();多分支語句;booll();判斷分式;2.2主函數。main() 調用main() 調用DrawMenu(); print();IsNegative();FractionEquation (a,b,c,d,e,f);等等。3、程序清單#include <conio.h>#include <iostream>using namespa

9、ce std;#include <math.h>/分式類,完成諸如(1/3+3/5這樣的計算)class Fraction public:void print();/ 輸出函數void printX();/ 輸出函數,當分式作為參數時輸出:/ 1/3應寫作(1/3),即要加一個括號/ 1/1應不寫/ -1/1應只寫一個負號Fraction();/ 無參構造函數,必須保留Fraction(int n,int d);/ 包含兩個參數的構造(分子,分母)Fraction(Fraction &other);/ 拷貝構造函數virtual Fraction();/ 析構函數void

10、Simplify();/ 分式簡化運算,如將18/(-4)化為(-9)/2Fraction operator +(Fraction& other);/ 分式加法運算Fraction operator -(Fraction& other);/ 分式減法運算Fraction operator *(Fraction &other);/ 分式乘法運算Fraction operator /(Fraction &other);/ 分式除法運算bool IsInteger();/ 判斷分式是否表示一個整數(即分母是否為1)bool IsNegative();/ 判斷分式是否表

11、示一個負數private:int numerator;/分子int denominator; /分母;Fraction:Fraction()Fraction(0,1);Fraction:Fraction()Fraction:Fraction(int n, int d)numerator=n;denominator=d;Simplify();Fraction Fraction:operator +(Fraction &other)Fraction ret;ret.numerator=(this->numerator*other.denominator+this->denomi

12、nator*other.numerator);ret.denominator=this->denominator*other.denominator;ret.Simplify();return ret;Fraction Fraction:operator *(Fraction &other)Fraction ret;ret.numerator=this->numerator*other.numerator;ret.denominator=this->denominator*other.denominator;ret.Simplify();return ret;Frac

13、tion:Fraction(Fraction &other)this->numerator=other.numerator;this->denominator=other.denominator;void Fraction:Simplify()if(denominator<0)numerator=-numerator;denominator=-denominator;int a=abs(numerator),b=abs(denominator);while(a!=0&&b!=0) a<b?b-=a:a-=b; int k=(a=0) ? b :

14、a);numerator=numerator/k;denominator=denominator/k;Fraction Fraction:operator -(Fraction &other)Fraction ret;ret.numerator=(this->numerator*other.denominator-this->denominator*other.numerator);ret.denominator=this->denominator*other.denominator;ret.Simplify();return ret;Fraction Fractio

15、n:operator /(Fraction &other)Fraction ret;ret.numerator=this->numerator*other.denominator;ret.denominator=this->denominator*other.numerator;ret.Simplify();return ret;void Fraction:print()if(denominator!=1 && denominator!=-1)cout<<numerator<<"/"<<denomina

16、tor;else if(denominator=1)cout<<numerator;elsecout<<-numerator;bool Fraction:IsNegative()if (numerator<0)return true;elsereturn false;bool Fraction:IsInteger()if (denominator=1)return true;elsereturn false;void Fraction:printX()if(IsInteger()if(numerator=1)return;if(numerator=-1)cout&

17、lt;<"-"return;print();elsecout<<"("print();cout<<")"class FractionEquation public:FractionEquation();FractionEquation(int a,int b,int c,int d,int e,int f);/含6個參數的構造函數virtual FractionEquation();Fraction Count();/計算方程的根,結果為“分式”void print();/輸出方程 Ax+B=Cvoid

18、printAnswer();/輸出方程的根 x=根private:Fraction numA;/參數A的值(分式)Fraction numB;/參數B的值(分式)Fraction numC;/參數C的值(分式);FractionEquation:FractionEquation()FractionEquation:FractionEquation()FractionEquation:FractionEquation(int a, int b, int c, int d, int e, int f):numA(b,a),numB(d,c),numC(f,e)void FractionEquati

19、on:print()numA.printX();if (!(numB.IsNegative()/如果B是正數(即d/c>=0)cout<<"x+"elsecout<<"x"numB.print();cout<<"="numC.print();Fraction FractionEquation:Count()Fraction ret;ret=(numC-numB)/numA;return ret;void FractionEquation:printAnswer()Fraction ans=Co

20、unt();cout<<"x="ans.print();void DrawWarn()cout<<endl<<endl;cout<<"t"<<endl;cout<<"t 請先輸入參數! "<<endl;cout<<"t"<<endl;void DrawMenu()system("cls");cout<<endl<<endl;cout<<"t&q

21、uot;<<endl;cout<<"t 請選擇操作 "<<endl;cout<<"t"<<endl;cout<<"t 1.輸入參數 "<<endl;cout<<"t"<<endl;cout<<"t 2.輸出結果 "<<endl;cout<<"t"<<endl;cout<<"t 0.退出 "&

22、lt;<endl;cout<<"t"<<endl;main()int a,b,c,d,e,f;char ch;bool beContinue=true;/表示是否繼續(xù),用戶選了“退出”,則為false,退出程序bool beInited=false;/表示方程是否被初始化,若沒有被初始化,則不允許“輸出結果”。while(beContinue)DrawMenu();while(1)ch=getch();if(ch<='3' && ch>='0')break;DrawMenu();swi

23、tch(ch)case '1':system("cls");cout<<endl<<endl<<endl;cout<<"t方程為: (b/a)x+d/c=f/e"<<endl;cout<<"t請依次輸入a b c d e f:"<<endl;a=0;while(a=0)cout<<"ta="cin>>a;if(a=0)cout<<"t分母不能為0!請重新輸入!"

24、<<endl;cout<<"tb="cin>>b;c=0;while(c=0)cout<<"tc="cin>>c;if(c=0)cout<<"t分母不能為0!請重新輸入!"<<endl;cout<<"td="cin>>d;e=0;while(e=0)cout<<"te="cin>>e;if(e=0)cout<<"t分母不能為0!請重新輸入!&q

25、uot;<<endl;cout<<"tf="cin>>f;beInited=true;break;case '2':system("cls");if(beInited)FractionEquation fa(a,b,c,d,e,f);cout<<endl<<endl<<endl;cout<<"t方程為:"<<endl<<"t "fa.print();cout<<endl;cout&

26、lt;<"t解得:"<<endl<<"t "fa.printAnswer();cout<<endl;cout<<"t"getch();elseDrawWarn();getch();break;case '0':beContinue=false;cout<<endl<<"t"break;return 1;4、程序調試與體會在程序調式過程最需要考慮到的就是調用順序的表達,即如何知道程序是先調用什么函數后調用什么。于是我們首先將“xx函數的調用”用cout輸出,作為一個調用的標記,這樣程序是怎么調用的就一清二楚。但本設計中沒有判斷表達式的語法錯誤,固在調試切忌出現語法錯誤。5、運行結果在程序中依次輸入分式(5/2)x+5/8=5/6的分子分母,運行結果如圖:圖三圖四圖五四、結論通過本次課程設計,讓我對C+這門學科對有了進一步的認識,熟練掌握了類及類模板的應用。以前對該課程的恐懼感都以消失,任何事情沒有做不到只有愿不愿意去做。剛開始接到該題,心中確實充滿困惑。不過在圖書館和網上找了一些資料看了后,便覺得思路就在眼前了,之前不過就是由于對該課程的恐懼而產生了一定的心里影響而已。之后憑借那閃現在眼前的點點思路,慢慢在琢

溫馨提示

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

評論

0/150

提交評論