C++程序设计(第2版)课后习题答案--第11章
11.9 定义分数类Rational......
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include<iostream.h> 2 #include<stdlib.h> 3 class Rational{ 4 private: 5 int fm,fz; 6 int getZdgys(int a,int b); 7 public: 8 Rational(){ 9 fm=1;fz=0; 10 } 11 Rational(int a,int b); 12 friend Rational Add(Rational r1,Rational r2); 13 friend Rational Sub(Rational r1,Rational r2); 14 void Print1(); 15 void Print2(); 16 }; 17 18 Rational::Rational(int fm1,int fz1) 19 { 20 int t=getZdgys(fm1,fz1); 21 fm=fm1/t; 22 fz=fz1/t; 23 } 24 25 void Rational::Print1() 26 { 27 cout<<fz<<"/"<<fm<<endl; 28 } 29 30 void Rational::Print2() 31 { 32 cout<<(double(fz)/fm)<<endl; 33 } 34 35 int Rational::getZdgys(int a,int b) 36 { 37 int t; 38 while(t=a%b) 39 { 40 a=b; 41 b=t; 42 } 43 return b; 44 } 45 46 Rational Add(Rational r1,Rational r2) 47 { 48 int m= r1.fm*r2.fm; 49 int n= r1.fz*r2.fm+r1.fm*r2.fz; 50 Rational result(m,n); 51 return result; 52 } 53 Rational Sub(Rational r1,Rational r2) 54 { 55 int m= r1.fm*r2.fm; 56 int n= r1.fz*r2.fm-r1.fm*r2.fz; 57 Rational result(m,n); 58 return result; 59 } 60 void main() 61 { 62 Rational a(24,12); 63 Rational b(6,1); 64 Rational result; 65 result=Add(a,b); 66 result.Print1(); 67 68 result=Sub(a,b); 69 result.Print1(); 70 }