分數(shù)計算器設計_第1頁
分數(shù)計算器設計_第2頁
分數(shù)計算器設計_第3頁
分數(shù)計算器設計_第4頁
分數(shù)計算器設計_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上 分數(shù)計算器設計 黔南民族師范學院 計算機科學系 姓名: 何- 指導老師: 任- 學號: - 班級: B12計科班 日期: 2013.12.2 1、問題描述定義一個整數(shù)類。定義一個分數(shù)類,由整數(shù)類派生出。能對分數(shù)進行各種計算和輸入/輸出。2、功能要求(1)定義整數(shù)類和分數(shù)類。其中,包括構(gòu)造函數(shù)、析構(gòu)函數(shù)、顯示函數(shù)等。(2)輸入/輸出:對流提取和流插入運算符進行重載。(3)計算功能:可進行分數(shù)的加、減、乘和除法運算。(4)化簡功能:將分數(shù)化簡為最簡分數(shù)。(5)異常處理功能:分數(shù)中分母不能為零。(6)菜單功能:每種功能的操作都是在菜單中進行相應選擇。3、問題的解決方案 根

2、據(jù)系統(tǒng)功能要求,可以將問題解決分為以下步驟:(1) 應用系統(tǒng)分析,建立該系統(tǒng)的功能模塊框圖以及界面的組織和設計; 頭文件聲明整數(shù)類聲明派生類 主函數(shù)成員函數(shù)定義 定義成員函數(shù)定義類的對象(2) 分析系統(tǒng)中的各個實體及它們之間的關系; 主函數(shù)成員函數(shù)定義Main.obj 分數(shù)計算器.obj main.exe(3)根據(jù)問題描述,設計系統(tǒng)的類層次;(4)完成類層次中各個類的描述;(5)完成類中各個成員函數(shù)的定義;(6)完成系統(tǒng)的應用模塊;(7)功能調(diào)試;(8)完成系統(tǒng)總結(jié)報告。源代碼:/分數(shù)計算器h.h:#include<iostream.h>class Integer /整數(shù)類prot

3、ected:int fz;int fm;public:Integer(int a=0,int b=1):fz(a),fm(b)Integer()void display();class Fraction:public Integer /分數(shù)類,進行計算和輸入輸出public:Fraction(int a=0,int b=1):Integer(a,b)friend istream & operator>>(istream & ,Fraction & ); /重載輸入流 friend ostream & operator<<(ostream

4、& ,Fraction & ); /重載輸出流 Fraction operator+(Fraction &c); /重載+運算符(分數(shù)與分數(shù)) Fraction operator+(int n); /重載+運算符(整數(shù)與分數(shù))Fraction operator-(Fraction &c); /重載-運算符(分數(shù)與分數(shù))Fraction operator-(int n); /重載-運算符(整數(shù)與分數(shù)) friend Fraction operator-(int n,Fraction &c);Fraction operator*(Fraction &

5、c); /重載*運算符(分數(shù)與分數(shù))Fraction operator*(int n); /重載*運算符(整數(shù)與分數(shù))Fraction operator/(Fraction &c);/重載/運算符(分數(shù)與分數(shù))Fraction operator/(int n);/重載/運算符(整數(shù)與分數(shù))friend Fraction operator/(int n,Fraction &c);Fraction predigest(); /約分函數(shù)void display();/實現(xiàn)函數(shù)(分數(shù)計算器設計)#include<iostream.h>#include"分數(shù)計算器h

6、.h"void Integer:display () cout<<endl;cout<<" -分數(shù)計算器-"<<endl<<endl;cout<<" 請選擇功能: "<<endl;cout<<" 1 分數(shù)與整數(shù)的四則運算。"<<endl<<endl;cout<<" 2 整數(shù)與分數(shù)的四則運算。"<<endl<<endl;cout<<" 3 分數(shù)

7、與分數(shù)的四則運算。"<<endl<<endl;cout<<" 0 輸入0退出。"<<endl<<endl;Fraction Fraction:predigest()/定義約分函數(shù) int n,d,t,sign=1; Fraction temp; if(fz<0 && fm<0) fz=-fz; fm=-fm; if(fz>0 && fm<0) fm=-fm; sign=-1;if(fz<0 && fm>0) fz=-fz;

8、 sign=-1;n=fz;d=fm;int r;if(n<d) /輾轉(zhuǎn)相除,求分子n與分母d的最大公約數(shù)t=n;n=d;d=t;r=n%d;while(r!=0) n=d; d=r; /d為最大公約數(shù) r=n%d;temp.fz=sign*(fz/d);temp.fm=fm/d;return temp;Fraction Fraction:operator+(Fraction &c)/重載兩個分數(shù)的加法運算符 Fraction temp; temp.fz=fz*c.fm+fm*c.fz; temp.fm=fm*c.fm; return temp;Fraction Fraction

9、:operator+(int n)/重載分數(shù)和整數(shù)的加法運算 Fraction temp; temp.fz=fm*n+fz; temp.fm=fm; return temp;Fraction operator-(int n,Fraction &c)Fraction temp;temp.fz=c.fm*n-c.fz ;temp.fm=c.fm;return temp;Fraction Fraction:operator-(int n)/重載分數(shù)減整數(shù)的減法運算符Fraction temp;temp.fz=fz-fm*n;temp.fm=fm;return temp;Fraction Fr

10、action:operator-(Fraction &c) /重載兩個分數(shù)的減法運算符 Fraction temp ;temp.fz =fz*c.fm -fm*c.fz;temp.fm =fm*c.fm;return temp;Fraction Fraction:operator*(Fraction &c)/重載兩個分數(shù)的乘法運算符Fraction temp;temp.fz=fz*c.fz;temp.fm=fm*c.fm;return temp;Fraction Fraction:operator *(int n)/重載分數(shù)與整數(shù)的乘法運算符Fraction temp;temp

11、.fz=fz*n;temp.fm=fm;return temp;Fraction Fraction:operator/(Fraction &c)/重載兩個分數(shù)的除法運算符Fraction temp;temp.fz=fz*c.fm;temp.fm=fm*c.fz;return temp;Fraction Fraction:operator/(int n)/重載分數(shù)除以整數(shù)的除法運算符Fraction temp;temp.fz=fz;temp.fm=fm*n;return temp;Fraction operator /(int n,Fraction &c) Fraction te

12、mp;temp.fz =n*c.fm ;temp.fm =c.fz ;return temp;ostream& operator<<(ostream &output,Fraction &t)/重載輸出運算符,輸出分數(shù)int a,b,c;a=t.fz;b=t.fm;if(a=0|b=0) /當分子,或者分母為0時,輸出0cout<<"0"if(b=1) /當分母為1時,輸出分子cout<<a;if(a>b&&b!=1)/判斷分數(shù)為假分數(shù)c=a/b;a=a%b;cout<<c;if(a

13、!=0)cout<<"又"<<a<<'/'<<b;if(a<0&&-a>b&&b!=1)/當分數(shù)為負時,判斷為假分數(shù)c=-a/b;a=-a%b;c=-c;cout<<'='<<c;if(a!=0)cout<<"又"<<a<<'/'<<b<<endl; if(t.fz>0&&t.fz<t.fm &&a

14、mp; t.fm!=0&&t.fm!=1)/判斷為真分數(shù)output<<t.fz<<'/'<<t.fm;if(t.fz<0 && -t.fz<t.fm && t.fm!=0 && t.fm!=1)/判斷為真分數(shù)output<<"("<<t.fz<<'/'<<t.fm<<")"return output;istream& operator>&

15、gt;(istream &input,Fraction &t)/重載輸入運算符,輸入分數(shù)int a,c;char b;input>>a>>b>>c;if(b='/' && c!=0 )t.fz=a;t.fm=c;elsecout<<"錯誤!輸入格式錯誤或分母為0!請退出重新輸入!"<<endl;return input;/main函數(shù)#include<iostream.h>#include"分數(shù)計算器h.h"int main()Inte

16、ger dis; Fraction a,b,result,real;int m,z;char c;/數(shù)據(jù)類型dis.display ();while(m!=0) cout<<" 請輸入:(0-3): "cin>>m;if(m=1) /分數(shù)與整數(shù)的運算cout<<endl<<" 請輸入一個分數(shù): "cin>>a;cout<<endl<<" 請輸入運算符: "cin>>c;cout<<endl<<" 輸入一個正

17、整數(shù): "cin>>z;if(c='+')result=a+z;if(c='-')result=a-z;if(c='*')result=a*z;if(c='/')result=a/z;real=result.predigest();cout<<"運算式規(guī)范為: "<<a<<c<<z<<'='<<a.predigest ()<<c<<z<<'='<

18、<real<<endl;cout<<endl;if(m=2) /整數(shù)與分數(shù)的運算cout<<endl; cout<<endl<<" 請輸入一個正整數(shù): "cin>>z;cout<<endl<<" 請輸入運算符: "cin>>c;cout<<endl<<" 請輸入一個分數(shù): "cin>>b;if(c='+')result=b+z;if(c='-')resul

19、t=z-b;if(c='*')result=b*z;if(c='/')result=z/b;real=result.predigest();cout<<"運算式規(guī)范為: "<<z<<c<<b<<'='<<z<<c<<b.predigest ()<<'='<<real<<endl;cout<<endl; if(m=3) /分數(shù)與分數(shù)的運算cout<<endl; cout<<endl<<" 請輸入一個

溫馨提示

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

評論

0/150

提交評論