c++課程設(shè)計(jì)---分?jǐn)?shù)計(jì)算器_第1頁
已閱讀1頁,還剩17頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  C++課程設(shè)計(jì)報(bào)告</b></p><p>  題目:分?jǐn)?shù)計(jì)算器 </p><p><b>  學(xué)號: </b></p><p><b>  姓名: </b></p><p><b>  班級:指導(dǎo)教師: &

2、lt;/b></p><p>  提交日期:2011-9-15 </p><p><b>  程序功能簡介</b></p><p>  分?jǐn)?shù)計(jì)算及測試程序,具有對輸入的運(yùn)算進(jìn)行“+-*/”的功能。</p><p><b>  課程設(shè)計(jì)要求</b></p><p>

3、;  將主程序設(shè)計(jì)成一個分?jǐn)?shù)計(jì)算器。</p><p>  可完成“+-*/’等基本運(yùn)算。</p><p>  可將分?jǐn)?shù)化為十進(jìn)制小數(shù)和帶分?jǐn)?shù)。</p><p>  可執(zhí)行“+-*/”(含括號)四則運(yùn)算。</p><p><b>  設(shè)計(jì)思路</b></p><p>  利用程序進(jìn)行加法 減法 乘法

4、 除法四種基本運(yùn)算,并約分。主要用到的算法:最小公倍數(shù),最大公約數(shù),交換。加法的原理:結(jié)果的分子 是兩個數(shù)的分子分母交換相乘相加的和,結(jié)果的分母是 兩分母的最小公倍數(shù)。減法的原理與加法類似。乘法的原理:分母相乘,分子相乘。除法的原理:第二個分?jǐn)?shù)上下交換后,使用乘法原理。約分的原理:分子分母分別除以分子分母的最大公約數(shù)得到的數(shù)組合成新的分子分母。</p><p><b>  關(guān)鍵源代碼注解</b&g

5、t;</p><p>  /*#ifndef _TGR_FRACTIONS_H</p><p>  #define _TGR_FRACTIONS_H*/</p><p>  #include <iostream.h></p><p>  #include <conio.h></p><p>  

6、#include <stdlib.h></p><p>  #include <math.h></p><p>  //#include <bool.h></p><p>  #include <string.h></p><p>  class fraction //分?jǐn)?shù)類定義</p&

7、gt;<p><b>  {</b></p><p><b>  public:</b></p><p>  fraction();//constructors</p><p>  fraction(int initn, int initd);</p><p>  //accesso

8、rs</p><p>  int numerator() const; //取分子,const成員函數(shù),不能修改數(shù)據(jù)成員</p><p>  int denominator() const; //取分母</p><p>  double decimal() const; //將分?jǐn)?shù)轉(zhuǎn)換為對應(yīng)的小數(shù)</p><p>  fraction

9、absval() const; //分?jǐn)?shù)的絕對值</p><p>  //modifiers</p><p>  void setnum(int newnum); //設(shè)置分子</p><p>  void setden(int newden); //設(shè)置分母</p><p>  void simplify(); //約分

10、</p><p>  void recip(); //分子分母轉(zhuǎn)置</p><p>  const fraction & operator+= (int rhs);</p><p><b>  private:</b></p><p><b>  int n;</b>&

11、lt;/p><p><b>  int d;</b></p><p><b>  };</b></p><p>  //free (nonmember) functions</p><p>  //miscellany</p><p>  void simple();

12、 //"簡單計(jì)算"函數(shù)</p><p>  void turn(); //"轉(zhuǎn)換"函數(shù)</p><p>  void test(); //測試函數(shù)</p><p>  void complex(); //"混合運(yùn)算"函

13、數(shù)</p><p>  void exam(); //"隨機(jī)測試題"函數(shù)</p><p>  int GCF(int x, int y); //求x,y的最大公因子</p><p>  //addition operators</p><p>  fraction operator+ (co

14、nst fraction &lhs, const fraction &rhs);</p><p>  fraction operator+ (const fraction &lhs, int rhs);</p><p>  //subtraction operators</p><p>  fraction operator- (const

15、fraction &lhs, const fraction &rhs);</p><p>  fraction operator- (const fraction &lhs, int rhs);</p><p>  //multiplication operators</p><p>  fraction operator* (const f

16、raction &lhs, const fraction &rhs);</p><p>  fraction operator* (const fraction &lhs, int rhs);</p><p>  //division operators</p><p>  fraction operator/ (const fraction

17、 &lhs, const fraction &rhs);</p><p>  fraction operator/ (const fraction &lhs, int rhs);</p><p>  //power operator</p><p>  fraction operator^ (const fraction &base,

18、 int exp); //^(冪)運(yùn)算符重載</p><p>  //comparison operators</p><p>  bool operator== (const fraction &lhs, const fraction &rhs);</p><p>  bool operator!= (const fraction &lhs

19、, const fraction &rhs);</p><p>  bool operator>= (const fraction &lhs, const fraction &rhs);</p><p>  bool operator<= (const fraction &lhs, const fraction &rhs);</p&

20、gt;<p>  bool operator> (const fraction &lhs, const fraction &rhs);</p><p>  bool operator< (const fraction &lhs, const fraction &rhs);</p><p>  bool operator== (c

21、onst fraction &lhs, int rhs);</p><p>  bool operator!= (const fraction &lhs, int rhs);</p><p>  bool operator>= (const fraction &lhs, int rhs);</p><p>  bool operator

22、<= (const fraction &lhs, int rhs);</p><p>  bool operator> (const fraction &lhs, int rhs);</p><p>  bool operator< (const fraction &lhs, int rhs);</p><p>  //

23、 I/O operators/functions</p><p>  ostream & operator<< (ostream &os, const fraction &f); // 輸出運(yùn)算符重載</p><p>  istream & operator>> (istream &is, fraction &f);

24、// 輸入運(yùn)算符重載</p><p>  void PrintAsMixed(ostream &os, const fraction &f); // 輸出帶分?jǐn)?shù)</p><p>  /*#endif*/</p><p>  /* fraction.cpp</p><p>  Fractions class - implemen

25、tation file--分?jǐn)?shù)類執(zhí)行文件開始*/</p><p>  //#include "fraction.h"</p><p>  fraction::fraction() : n(0), d(1) {} ; //缺省構(gòu)造函數(shù)(=0/1)</p><p>  fraction::fraction(int initn, int initd

26、) : n(initn), d(initd) {};</p><p>  int fraction::numerator() const //取分子</p><p>  {return n;}</p><p>  int fraction::denominator() const //取分母</p><p>  {return

27、d;</p><p><b>  }</b></p><p>  double fraction::decimal() const //分?jǐn)?shù)轉(zhuǎn)換小數(shù)</p><p>  {return double(n) / double(d);</p><p><b>  }</b></p>

28、<p>  fraction fraction::absval() const //取分?jǐn)?shù)絕對值</p><p>  {fraction returnValue(abs(n), abs(d)); //通過構(gòu)造函數(shù)取分母分子絕對值</p><p>  return returnValue;</p><p><b>  }</b>

29、;</p><p>  void fraction::setnum(int newnum) //設(shè)置分子的值</p><p>  {n = newnum;</p><p><b>  }</b></p><p>  void fraction::setden(int newden) //設(shè)置分母的值&

30、lt;/p><p>  {if(newden != 0) //分母非零時設(shè)置</p><p>  d = newden;</p><p>  else //若分母為零,顯示錯誤信息并退出</p><p>  {cout << "錯誤:除數(shù)為

31、零?。?!\n"</p><p>  << "按任意鍵終止!";</p><p>  getch(); </p><p>  abort(); //退出</p><p><b>  }</b&

32、gt;</p><p><b>  }</b></p><p>  void fraction::simplify() //分?jǐn)?shù)約分</p><p><b>  {</b></p><p>  int r = GCF(n, d);</p><p>&l

33、t;b>  n /= r;</b></p><p><b>  d /= r;</b></p><p><b>  }</b></p><p>  void fraction::recip() //分子分母交換</p><p><b>  {<

34、/b></p><p>  int temp = n;</p><p><b>  n = d;</b></p><p><b>  d = temp;</b></p><p><b>  }</b></p><p>  const fractio

35、n & fraction::operator+= (int rhs) //重載"+="</p><p><b>  {</b></p><p>  fraction newrhs(rhs, 1); //將作為參數(shù)的整數(shù)RHS轉(zhuǎn)換為分?jǐn)?shù)類的對象</p><p>  retur

36、n (*this+newrhs); //</p><p><b>  }</b></p><p>  int GCF(int x, int y) //輾轉(zhuǎn)相除求x,y的最大公約數(shù)</p><p><b>  {</b></p><p>  int r = x%y

37、;</p><p><b>  if(r==0)</b></p><p><b>  return y;</b></p><p><b>  else</b></p><p>  return GCF(y, r);</p><p><b>  

38、}</b></p><p>  fraction operator+ (const fraction &lhs, const fraction &rhs) //重載"+",完成兩分?jǐn)?shù)相加情況</p><p><b>  {</b></p><p>  fraction sum;

39、 //定義分?jǐn)?shù)類對象,通過兩參數(shù)對象對其賦值</p><p>  int newnum = (lhs.numerator() * rhs.denominator())</p><p>  +(rhs.numerator() * lhs.denominator());//得到相加后的分子</p><p>  int newden = (lhs.denominat

40、or() * rhs.denominator()); //得到相加后的分母</p><p>  sum.setnum(newnum); //設(shè)置分子</p><p>  sum.setden(newden); //設(shè)置分母</p><p>  sum.simplify(); //分?jǐn)?shù)約分<

41、/p><p>  return sum;</p><p><b>  }</b></p><p>  fraction operator+ (const fraction &lhs, int rhs) //重載"+"分?jǐn)?shù)與整數(shù)相加</p><p><b>  {</b>

42、;</p><p>  fraction newrhs(rhs, 1); //將RHS轉(zhuǎn)換為分?jǐn)?shù)類對象</p><p>  return lhs + newrhs;</p><p><b>  }</b></p><p>  fraction operator- (const fr

43、action &lhs, const fraction &rhs)//重載"-"完成兩分?jǐn)?shù)相減</p><p><b>  {</b></p><p>  fraction newrhs = rhs;</p><p>  newrhs.setnum(-rhs.numerator()); //設(shè)置分母

44、為其相反數(shù)</p><p>  return lhs + newrhs; //利用"+"的重載</p><p><b>  }</b></p><p>  fraction operator- (const fraction &lhs, int rhs) //重載"-&qu

45、ot;完成分?jǐn)?shù)與整數(shù)的相減</p><p><b>  {</b></p><p>  fraction newrhs(rhs, -1);</p><p>  return lhs + newrhs; //利用"+"的重載</p><p><b> 

46、 }</b></p><p>  fraction operator* (const fraction &lhs, const fraction &rhs) //重載"*"完成兩分?jǐn)?shù)相乘</p><p><b>  {</b></p><p>  fraction product;</p&g

47、t;<p>  int newnum = lhs.numerator() * rhs.numerator(); //分子相乘</p><p>  int newden = lhs.denominator() * rhs.denominator(); //分母相乘</p><p>  product.setnum(newnum);

48、 //設(shè)置分子</p><p>  product.setden(newden); //設(shè)置分母</p><p>  product.simplify(); //分?jǐn)?shù)約分</p><p>  return pro

49、duct;</p><p><b>  }</b></p><p>  fraction operator* (const fraction &lhs, int rhs) //重載"*"完成分?jǐn)?shù)與整數(shù)的相乘 </p><p><b>  {</b></p>

50、<p>  fraction prod(lhs.numerator() * rhs, lhs.denominator()); //通過構(gòu)造函數(shù)完成賦值</p><p>  prod.simplify(); //分?jǐn)?shù)約分</p><p>  return prod;</p><p&g

51、t;<b>  }</b></p><p>  fraction operator/ (const fraction &lhs, const fraction &rhs) //重載"/"完成兩分?jǐn)?shù)相除</p><p><b>  {</b></p><p>  if(rhs == 0)

52、 //若分母為零,顯示錯誤信息并退出</p><p><b>  {</b></p><p>  cout << "Error: Division by zero attempted!\n"</p><p>  << "Pres

53、s any key to terminate";</p><p><b>  getch();</b></p><p>  abort(); //退出</p><p><b>  }</b></p><p>  fracti

54、on newrhs = rhs;</p><p>  newrhs.recip(); //將作分母的分?jǐn)?shù)倒置</p><p>  return lhs * newrhs; //利用分?jǐn)?shù)乘法</p><p><b>  }</b></p><p

55、>  fraction operator/ (const fraction &lhs, int rhs) //重載"/"完成分?jǐn)?shù)與整數(shù)的相除 </p><p><b>  {</b></p><p>  if(rhs == 0) //若分母為零,顯示錯誤信息并退出</p&

56、gt;<p><b>  {</b></p><p>  cout << "錯誤:除數(shù)為零?。?!\n"</p><p>  << "按任意鍵終止!";</p><p><b>  getch();</b></p><p>

57、<b>  abort();</b></p><p><b>  }</b></p><p>  fraction quot(lhs.numerator(), lhs.denominator() * rhs); //通過構(gòu)造函數(shù)完成賦值</p><p>  quot.simplify();

58、 //分?jǐn)?shù)約分</p><p>  return quot;</p><p><b>  }</b></p><p>  fraction operator^ (const fraction &base, int exp)</p><p><b>  {</b

59、></p><p>  fraction returnValue;</p><p>  returnValue.setnum(pow(base.numerator(), exp)); //通過函數(shù)完成</p><p>  returnValue.setden(pow(base.denominator(), exp)); //分子分母

60、冪乘</p><p>  return returnValue;</p><p><b>  }</b></p><p>  bool operator== (const fraction &lhs, const fraction &rhs) //重載"=="判斷兩分?jǐn)?shù)是否相等</p>&l

61、t;p><b>  {</b></p><p>  return lhs.decimal() == rhs.decimal();</p><p><b>  }</b></p><p>  bool operator!= (const fraction &lhs, const fraction &rh

62、s) //重載"!="判斷兩分?jǐn)?shù)是否不等</p><p><b>  {</b></p><p>  return lhs.decimal() != rhs.decimal();</p><p><b>  }</b></p><p>  bool operator>=

63、 (const fraction &lhs, const fraction &rhs) //重載">="判斷前分?jǐn)?shù)是否大于等//于后分?jǐn)?shù)</p><p><b>  {</b></p><p>  return lhs.decimal() >= rhs.decimal();</p><p>&l

64、t;b>  }</b></p><p>  bool operator<= (const fraction &lhs, const fraction &rhs) //重載"<="判斷前分?jǐn)?shù)是否小于等//于后分?jǐn)?shù)</p><p><b>  {</b></p><p>  ret

65、urn lhs.decimal() <= rhs.decimal();</p><p><b>  }</b></p><p>  bool operator> (const fraction &lhs, const fraction &rhs) //重載">"判斷前分?jǐn)?shù)是否大于//后分?jǐn)?shù)</p>

66、;<p><b>  {</b></p><p>  return lhs.decimal() > rhs.decimal();</p><p><b>  }</b></p><p>  bool operator< (const fraction &lhs, const fractio

67、n &rhs) //重載"<"判斷前分?jǐn)?shù)是否小于//后分?jǐn)?shù)</p><p><b>  {</b></p><p>  return lhs.decimal() < rhs.decimal();</p><p><b>  }</b></p><p>

68、  bool operator== (const fraction &lhs, int rhs) //重載"=="判斷分?jǐn)?shù)與整數(shù)是否相等</p><p><b>  {</b></p><p>  return lhs.decimal() == rhs;</p><p><b>  }&l

69、t;/b></p><p>  bool operator!= (const fraction &lhs, int rhs) //重載"!="判斷分?jǐn)?shù)與整數(shù)是否不等</p><p><b>  {</b></p><p>  return lhs.decimal() != rhs;</p&g

70、t;<p><b>  }</b></p><p>  bool operator>= (const fraction &lhs, int rhs) //重載">="前分?jǐn)?shù)是否大于等于整數(shù)</p><p><b>  {</b></p><p>  ret

71、urn lhs.decimal() >= rhs;</p><p><b>  }</b></p><p>  bool operator<= (const fraction &lhs, int rhs) //重載"<="前分?jǐn)?shù)是否小于等于整數(shù)</p><p><b>  {

72、</b></p><p>  return lhs.decimal() <= rhs;</p><p><b>  }</b></p><p>  bool operator> (const fraction &lhs, int rhs) //重載">"前分?jǐn)?shù)是否大于整數(shù)

73、</p><p><b>  {</b></p><p>  return lhs.decimal() > rhs;</p><p><b>  }</b></p><p>  bool operator< (const fraction &lhs, int rhs)

74、 //重載"<"前分?jǐn)?shù)是否小于整數(shù)</p><p><b>  {</b></p><p>  return lhs.decimal() == rhs;</p><p><b>  }</b></p><p>  ostream & operator<

75、< (ostream &os, const fraction &f) //重載輸出運(yùn)算符</p><p><b>  {</b></p><p>  fraction temp = f.absval();</p><p>  int numer = f.numerator();</p><p> 

76、 int denom = f.denominator();</p><p>  if((!((numer > 0 && denom > 0) </p><p>  || (numer < 0 && denom < 0))) </p><p>  && f != 0)

77、 </p><p>  os << '-'; //分子分母不同號就輸出"-"</p><p>  if(temp.numerator() == 0 || temp.denominator() == 1)</p><p>  os <<

78、; temp.numerator(); // 分子為0或分母為1時就輸出分子</p><p><b>  else</b></p><p>  os << temp.numerator() << '/' << temp.denominator();//其他情況輸出此分?jǐn)?shù)</p>

79、<p>  return os; //</p><p><b>  }</b></p><p>  istream & operator>> (istream &is, fraction &f) //is:輸入流,f:待輸入的分?jǐn)?shù)</p>

80、<p><b>  {</b></p><p>  int newnum, newden;</p><p>  char slash = ' ';</p><p><b>  do</b></p><p><b>  {</b></p>

81、<p>  is >> newnum >> slash >> newden; //</p><p>  } while(slash != '/');</p><p>  f.setnum(newnum);</p><p>  f.setden(newden);</p><

82、p>  return is; //</p><p><b>  }</b></p><p>  //將分?jǐn)?shù)f按整數(shù),真分?jǐn)?shù)格式輸出到流os</p><p>  void PrintAsMixed(ostream &os, const fraction &f

83、)</p><p><b>  {</b></p><p>  int wholePart = f.numerator() / f.denominator();//wholepart獲得整數(shù)部分</p><p>  fraction fracPart = f - wholePart; //fracpart獲得真分?jǐn)?shù)部分&l

84、t;/p><p>  cout <<"帶分?jǐn)?shù)為:";</p><p>  if(wholePart != 0)</p><p>  cout << wholePart << " "; //輸出整數(shù)部分</p><p>  if(fracP

85、art != 0)</p><p>  cout << fracPart; //輸出真分?jǐn)?shù)部分</p><p><b>  }</b></p><p>  //準(zhǔn)備工作結(jié)束,下面開始主函數(shù)。</p><p>  void main(){</p>

86、<p>  int choice;</p><p><b>  char CLS;</b></p><p>  cout<<"是否清屏?(Y/N)\n";</p><p><b>  cin>>CLS;</b></p><p>  if(CLS=

87、='Y'||CLS=='y')system("cls");</p><p>  //getch();</p><p>  cout<<" 歡迎使用分?jǐn)?shù)計(jì)算器!\n";</p><p>  cout<<"

88、@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n";</p><p>  cout<<" @@ @@\n";</p><p>  cout&l

89、t;<" @@ <1>簡單計(jì)算 @@\n"; </p><p>  cout<<" @@ @@\n";&

90、lt;/p><p>  cout<<" @@ <2>分?jǐn)?shù)化為十進(jìn)制小數(shù)和帶分?jǐn)?shù) @@\n";</p><p>  cout<<" @@

91、 @@\n";</p><p>  cout<<" @@ <3>分?jǐn)?shù)測試 @@\n";</p><p>  cout<<" @@

92、 @@\n";</p><p>  cout<<" @@ <4>分?jǐn)?shù)混合運(yùn)算 @@\n";</p><p>  cout<<" @@

93、 @@\n";</p><p>  cout<<" @@ <5>隨機(jī)測試題 @@\n";</p><p>  cout<<"

94、 @@ @@\n";</p><p>  cout<<" @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n";</p><p>  co

95、ut<<"請選擇:\n"; //選擇功能</p><p>  cin>>choice;</p><p>  if(choice>6||choice<1)</p><p>  {cout<<"輸入無效,請重新選擇:\n";</p>

96、<p>  main(); //回到主菜單</p><p><b>  }</b></p><p><b>  else{</b></p><p>  switch(choice){ //進(jìn)入函數(shù)</p>&l

97、t;p>  case 1: simple();break;</p><p>  case 2: turn();break;</p><p>  case 3: test();break;</p><p>  case 4: complex();break;</p><p>  case 5: exam();break;</p>

98、;<p><b>  }</b></p><p><b>  //main();</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  //------------------------

99、----------------------------------------</p><p>  void simple(){ //"簡單計(jì)算"函數(shù)</p><p>  fraction f1;</p><p>  fraction f2;</p><p>  fractio

100、n sum;</p><p>  char fuhao,yn;</p><p>  int f3,kind;</p><p>  choose: cout<<" <1>分?jǐn)?shù)與分?jǐn)?shù)\n";</p><p>  cout<<" <2>分?jǐn)?shù)與

101、整數(shù)\n";</p><p>  cout<<" <3>返回\n";</p><p>  cout<<"請選擇:\n";</p><p>  cin>>kind; </p><p>  if(kind==1)

102、 //分?jǐn)?shù)之間計(jì)算</p><p>  {cout<<"請輸入第一個分?jǐn)?shù):"; //輸入數(shù)據(jù)</p><p><b>  cin>>f1;</b></p><p>  cout<<"\n請輸入第二個分?jǐn)?shù):";</p

103、><p><b>  cin>>f2;</b></p><p>  cout<<"\n請輸入運(yùn)算符:";</p><p>  cin>>fuhao;</p><p>  f1.simplify(); //分?jǐn)?shù)約分</p>

104、<p>  f2.simplify();</p><p>  switch(fuhao){ //進(jìn)入計(jì)算</p><p>  case '+':cout<<"\nsum="<<f1+f2<<endl;break;</p><p>  cas

105、e '-':cout<<"\nsum="<<f1-f2<<endl;break;</p><p>  case '*':cout<<"\nsum="<<f1*f2<<endl;break;</p><p>  case '/':co

106、ut<<"\nsum="<<f1/f2<<endl;break;</p><p><b>  }</b></p><p><b>  }</b></p><p>  else if(kind==2){ //分?jǐn)?shù)與整數(shù)之間運(yùn)

107、算</p><p>  cout<<"請輸入一個分?jǐn)?shù):";</p><p><b>  cin>>f1;</b></p><p>  cout<<"\n請輸入一個整數(shù):";</p><p><b>  cin>>f3;<

108、;/b></p><p>  cout<<"\n請輸入運(yùn)算符:";</p><p>  cin>>fuhao;</p><p>  f1.simplify();</p><p>  switch(fuhao){ //進(jìn)入計(jì)算</p>&l

109、t;p>  case '+':cout<<"\nsum="<<f1+f3<<endl;break;</p><p>  case '-':cout<<"\nsum="<<f1-f3<<endl;break;</p><p>  case &#

110、39;*':cout<<"\nsum="<<f1*f3<<endl;break;</p><p>  case '/':cout<<"\nsum="<<f1/f3<<endl;break;</p><p>  //case '^':cout

111、<<"\nsum="<< f1 ^ f3 <<endl;break;</p><p><b>  }</b></p><p><b>  }</b></p><p>  else if(kind==3)main(); //返回</p>

112、<p>  else {cout<<"輸入錯誤!請重新選擇:\n";goto choose;}</p><p><b>  getch();</b></p><p>  cout<<endl;</p><p>  cout<<"是否繼續(xù)?(Y/N)\n";

113、 //詢問繼續(xù)與否</p><p><b>  cin>>yn;</b></p><p>  if(yn=='Y'||yn=='y')simple();</p><p>  else main(); //返回菜單</p>

114、<p><b>  }</b></p><p>  //------------------------------------------------------------</p><p>  void turn(){ //"轉(zhuǎn)換"函數(shù)</p><p>  

115、fraction f1;</p><p>  fraction Result;</p><p><b>  char yn;</b></p><p>  cout<<"請輸入一個分?jǐn)?shù):\n";</p><p><b>  cin>>f1;</b></

116、p><p>  cout<<"對應(yīng)小數(shù)為:"<<f1.decimal()<<endl;//使用"分轉(zhuǎn)小"函數(shù)</p><p>  if(f1>1) //輸出帶分?jǐn)?shù)</p><p>  PrintAsMixed(cout,f1

117、);</p><p>  else cout<<"此分?jǐn)?shù)為真分?jǐn)?shù)!"<<endl;</p><p><b>  getch();</b></p><p>  cout<<endl;</p><p>  cout<<"是否繼續(xù)?(Y/N)\n&q

118、uot;;</p><p><b>  cin>>yn;</b></p><p>  if(yn=='Y'||yn=='y')turn();</p><p>  else main();</p><p><b>  }</b></p><

119、;p>  //-----------------------------------------------------------------</p><p>  void test(){ //測試函數(shù)</p><p><b>  char yn;</b></p><p>  fr

120、action f1; </p><p>  fraction f2; //定義兩個分?jǐn)?shù)f1,f2</p><p><b>  int i;</b></p><p>  // clrscr(); //利用>>重載輸入f1,f2</p><p>  cout <&

121、lt; "第一個分?jǐn)?shù):\n";</p><p>  cin >> f1;</p><p>  cout << "\n第二個分?jǐn)?shù):\n";</p><p>  cin >> f2;</p><p>  cout << "\n輸入一個整數(shù):\n&qu

122、ot;;</p><p><b>  cin >> i;</b></p><p>  f1.simplify();</p><p>  f2.simplify();</p><p>  cout<<"對兩分?jǐn)?shù)進(jìn)行+,-,*,/運(yùn)算\n"; </p>

123、<p>  fraction sum = f1 + f2; </p><p>  fraction diff = f1 - f2;</p><p>  fraction prod = f1 * f2;</p><p>  fraction quot;</p><p>  if(f2 != 0)</p><p&

124、gt;  quot = f1 / f2;</p><p>  cout<<"輸出小數(shù)運(yùn)算結(jié)果\n";</p><p>  cout << f1 << " 十進(jìn)制為: " << f1.decimal() << '\n';</p><p>  cout

125、<< f2 << " 十進(jìn)制為: " << f2.decimal() << "\n\n";</p><p>  cout<<"利用<<重載輸出運(yùn)算結(jié)果\n";</p><p>  cout << f1 << " + &quo

126、t; << f2 << " = " << sum << " (" << sum.decimal() << ")\n";</p><p>  cout << f1 << " - " << f2 << "

127、= " << diff << " (" << diff.decimal() << ")\n";</p><p>  cout << f1 << " * " << f2 << " = " << prod <<

128、 " (" << prod.decimal() << ")\n";</p><p>  cout << f1 << " / " << f2 << " = ";</p><p>  if(f2 != 0)</p><p&g

129、t;  cout << quot << " (" << quot.decimal() << ")\n\n";</p><p><b>  else</b></p><p>  cout << "無意義?。?!\n\n";</p><

130、p>  cout<<"進(jìn)行分?jǐn)?shù)(f1)和整數(shù)(i)的四則運(yùn)算并輸出結(jié)果\n"; </p><p>  cout << f1 << " + " << i << " = " << f1 + i << "\n";<

131、;/p><p>  cout << f1 << " - " << i << " = " << f1 - i << "\n";</p><p>  cout << f1 << " * " << i <&l

132、t; " = " << f1 * i << "\n";</p><p>  cout << f1 << " / " << i << " = ";</p><p>  if(i != 0)</p><p>  cout

133、 << f1 / i << "\n\n";</p><p><b>  else</b></p><p>  cout << "無意義?。?!\n\n";</p><p>  cout << "Boolean operator tests (1 =

134、true, 0 = false)\n";</p><p>  cout << f1 << " == " << f2 << ": " << (f1 == f2) << '\n';</p><p>  cout << f1 << &q

135、uot; != " << f2 << ": " << (f1 != f2) << '\n';</p><p>  cout << f1 << " >= " << f2 << ": " << (f1 >= f2)

136、 << '\n';</p><p>  cout << f1 << " <= " << f2 << ": " << (f1 <= f2) << '\n';</p><p>  cout << f1 <<

137、; " > " << f2 << ": " << (f1 > f2) << '\n';</p><p>  cout << f1 << " < " << f2 << ": " << (f1

138、 < f2) << "\n\n";</p><p>  double dec1 = f1.decimal();</p><p>  double dec2 = f2.decimal();</p><p>  if(dec1 > 1 && (int(dec1) != dec1))</p>&l

139、t;p><b>  {</b></p><p>  cout << f1 << " 代分?jǐn)?shù)為: ";</p><p>  PrintAsMixed(cout, f1);</p><p>  cout << '\n';</p><p><b

140、>  }</b></p><p>  if(dec2 > 1 && (int(dec2) != dec2))</p><p><b>  {</b></p><p>  cout << f2 << " 代分?jǐn)?shù)為: ";</p><p> 

141、 PrintAsMixed(cout, f2);</p><p><b>  }</b></p><p>  cout<<"分?jǐn)?shù)測試完畢!\n";</p><p><b>  getch();</b></p><p>  //return 0;</p>

142、<p>  cout<<endl;</p><p>  cout<<"是否繼續(xù)?(Y/N)\n";</p><p><b>  cin>>yn;</b></p><p>  if(yn=='Y'||yn=='y')test();</p>

溫馨提示

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

評論

0/150

提交評論