C++分数类(有理数类)重载四则运算、比较逻辑运算 您所在的位置:网站首页 所有成员函数都能重载 C++分数类(有理数类)重载四则运算、比较逻辑运算

C++分数类(有理数类)重载四则运算、比较逻辑运算

2024-07-11 20:13| 来源: 网络整理| 查看: 265

任何有理数都可以表示为“分子/分母”的方式,其中分子、分母都是整数。

现实现一个有理数类,为这个有理数类重载四则运算(+、-、*、/)和所有的比较逻辑运算符(==、!=、>=、>、 public: Rational(int num=1,int denomi=1){ //构造函数,带默认参数 numerator = num; denominator = denomi; normalize(); } Rational operator + (Rational &s); //重载加法运算 Rational operator - (Rational &s); //重载减法运算 Rational operator * (Rational &s); //重载乘法运算 Rational operator / (Rational &s); //重载除法运算 bool operator > (Rational &s); //重载">"运算符 bool operator = (Rational &s); //重载">="运算符 bool operator >(istream&,Rational&); friend ostream& operator if(denominator Rational t; t.numerator = numerator*s.denominator+denominator*s.numerator; t.denominator = denominator*s.denominator; return Rational(t.numerator,t.denominator); } Rational Rational::operator - (Rational &s){ Rational t; t.numerator = numerator*s.denominator-denominator*s.numerator; t.denominator = denominator*s.denominator; return Rational(t.numerator,t.denominator); } Rational Rational::operator * (Rational &s){ Rational t; t.numerator = numerator*s.numerator; t.denominator = denominator*s.denominator; return Rational(t.numerator,t.denominator); } Rational Rational::operator / (Rational &s){ Rational t; t.numerator = numerator*s.denominator; t.denominator = denominator*s.numerator; return Rational(t.numerator,t.denominator); } bool Rational::operator > (Rational &s){ if(numerator*s.denominator-denominator*s.numerator>0) return true; else return false; } bool Rational::operator if(numerator*s.denominator-denominator*s.numerator>=0) return true; else return false; } bool Rational::operator if(numerator*s.denominator-denominator*s.numerator==0) return true; else return false; } bool Rational::operator == (Rational &s){ if(numerator*s.denominator-denominator*s.numerator!=0) return true; else return false; } istream& operator >> (istream& in,Rational &obj){ cout obj.numerator; cout obj.denominator; return in; } ostream& operator Rational r1,r2; cout return b?gcd(b,a%b):a; } void normalize(); //将分数化为最简式函数 private: int numerator; //分子 int denominator; //分母 }; void Rational::normalize(){ if(denominator int a = x.numerator; int b = x.denominator; int c = y.numerator; int d = y.denominator; int e = a*d+c*b; int f = b*d; return Rational(e,f); } Rational operator - (Rational &x,Rational &y){ int a = x.numerator; int b = x.denominator; int c = y.numerator; int d = y.denominator; int e = a*d-c*b; int f = b*d; return Rational(e,f); } Rational operator * (Rational &x,Rational &y){ int a = x.numerator; int b = x.denominator; int c = y.numerator; int d = y.denominator; int e = a*c; int f = b*d; return Rational(e,f); } Rational operator / (Rational &x,Rational &y){ int a = x.numerator; int b = x.denominator; int c = y.numerator; int d = y.denominator; int e = a*d; int f = b*c; return Rational(e,f); } bool operator > (Rational &x,Rational &y){ Rational p = x-y; return p.numerator > 0; } bool operator Rational p = x-y; return p.numerator >= 0; } bool operator Rational p = x-y; return p.numerator cout obj.numerator; cout obj.denominator; return in; } ostream& operator Rational r1(3,5),r2(2,5); cout



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有