#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
class Rational{
private :
int numerator,denomirator;
static int gcd(int n,int d);
public :
Rational(){};
Rational(int nume,int deno) : numerator(nume),denomirator(deno){
simply();
}
void simply()
{
int d = gcd(numerator,denomirator);
numerator /= d;
denomirator /= d;
return;
}
int getNumerator(){ return numerator; }
int getDenomirator(){ return denomirator; }
int equal(const Rational& second);//比较分数大小
int intValue();//返回分数的整数部分
double doubleValue();//小数分子
Rational(int num){// 整数转化为分数
numerator = num;
denomirator = 1;
}
Rational operator + (Rational r2);
Rational operator - (Rational r2);
Rational operator * (Rational r2);
Rational operator / (Rational r2);
friend istream& operator>>(istream& scint, Rational& r);
friend ostream& operator<<(ostream& scout,const Rational& r);
};
int Rational::gcd(int a,int b)
{
if(b == 0) return a;
return gcd(b,a%b);
}
int Rational::equal(const Rational& second)
{
int t = numerator * second.denomirator - second.numerator * denomirator;
if(t > 0) return 1;
if(t == 0) return 0;
if(t < 0) return -1;
}
int Rational::intValue(){ return numerator / denomirator; }
double Rational::doubleValue(){ return (double)(numerator % denomirator)* 1.0 / (double)denomirator; }
Rational Rational::operator +(Rational r2)
{
int num = numerator * r2.denomirator + denomirator * r2.numerator;
int deno = denomirator * r2.denomirator;
return Rational(num,deno);
}
Rational Rational::operator -(Rational r2)
{
int num = numerator * r2.denomirator - denomirator * r2.numerator;
int deno = denomirator * r2.denomirator;
return Rational(num,deno);
}
Rational Rational::operator *(Rational r2)
{
int num = numerator * r2.numerator;
int deno = denomirator * r2.denomirator;
return Rational(num,deno);
}
Rational Rational::operator /(Rational r2)
{
int num = numerator * r2.denomirator;
int deno = denomirator * r2.numerator;
return Rational(num,deno);
}
istream& operator>>(istream& scint, Rational& r)
{
cout << "输入分数(格式:分子/分母):";
scint >>r.numerator >> r.denomirator;
r.simply();
return scint;
}
ostream& operator <<(ostream& scout,const Rational& r)
{
scout << r.numerator;
if(r.denomirator != 1)
scout<<"/"<<r.denomirator;
return scout;
}
bool operator < (Rational r1,Rational r2)
{
if(r1.equal(r2) == -1)
return true;
return false;
}
bool operator > (Rational r1,Rational r2)
{
if(r1.equal(r2) == 1)
return true;
return false;
}
bool operator == (Rational r1,Rational r2)
{
if(r1.equal(r2) == 0)
return true;
return false;
}
bool operator != (Rational r1,Rational r2)
{
if(r1.equal(r2) != 0)
return true;
return false;
}
int main()
{
Rational a,b;
cin>>a;
cin>>b;
cout<<a + b<<endl;
cout<<a - b<<endl;
cout<<a * b<<endl;
cout<<a / b<<endl;
if(a < b) cout<<a<<" < "<<b<<endl;
else if( a == b) cout<<a<<" = "<<b<<endl;
else if(a > b) cout<<a<<" > "<<b<<endl;
return 0;
}
标签:return,类内,r2,int,numerator,denomirator,运算符,Rational,加减乘除
From: https://www.cnblogs.com/Elgina/p/17892591.html