📄 rational.cpp
字号:
#include<iostream>
using namespace std;
class Rational
{
public:
Rational(long p=0,long q=1){num=p;den=q; Reduce();}
friend istream& operator>>(istream& istr,Rational& x)
{
istr>>x.num>>x.den;
return istr;
}
friend ostream& operator<<(ostream& ostr,Rational x)
{
ostr<<x.num<<"/"<<x.den;
return ostr;
}
Rational operator+(Rational& x)const;
Rational operator-(Rational& x)const;
Rational operator*(Rational& x)const;
Rational operator/(Rational& x)const;
Rational operator-()const;
int operator<(Rational& x)const;
int operator<=(Rational& x)const;
int operator==(Rational& x)const;
int operator!=(Rational& x)const;
int operator>(Rational& x)const;
int operator>=(Rational& x)const;
double toDouble()const;
int GetNum()const{return num;}
int GetDen()const{return den;}
void Reduce();
private:
long num;
long den;
void Standardize()
{
if(den<0) {num=-num;den=-den;}
}
long gcd(long m,long n)const
{
if(m%n==0) return n;
else return gcd(n,m%n);
}
};
Rational Rational::operator+(Rational& x)const
{
return Rational(num*x.den+den*x.num,den*x.den);
}
Rational Rational::operator-(Rational& x)const
{
return Rational(num*x.den-den*x.num,den*x.den);
}
Rational Rational::operator*(Rational& x)const
{
return Rational(num*x.num,den*x.den);
}
Rational Rational::operator/(Rational& x)const
{
return Rational(num*x.den,den*x.num);
}
Rational Rational::operator-()const
{
return Rational(-num,den);
}
int Rational::operator<(Rational& x)const
{
return (num*x.den-den*x.num<0? 1:0);
}
int Rational::operator<=(Rational& x)const
{
return (num*x.den-den*x.num<=0? 1:0);
}
int Rational::operator==(Rational& x)const
{
return (num*x.den-den*x.num==0? 1:0);
}
int Rational::operator>(Rational& x)const
{
return (num*x.den-den*x.num>0? 1:0);
}
int Rational::operator>=(Rational& x)const
{
return (num*x.den-den*x.num>=0? 1:0);
}
void Rational::Reduce()
{
//Standardize();
long t=gcd(num,den);
num/=t;
den/=t;
Standardize();
}
void main()
{
cout<<"求解有理数方程Ax+B=C"<<endl;
Rational A,B,C,x;
cout<<"please input A:"<<endl;
cin>>A;
cout<<"please input B:"<<endl;
cin>>B;
cout<<"please input C:"<<endl;
cin>>C;
cout<<"有理数方程为:";
cout<<"("<<A<<")"<<"x+"<<"("<<B<<")"<<"="<<C<<endl;
A.Reduce ();
B.Reduce ();
C.Reduce ();
cout<<"约分后的有理数方程为:";
cout<<"("<<A<<")"<<"x+"<<"("<<B<<")"<<"="<<C<<endl;
x=(C-B)/A;
cout<<"x=(C-B)/A="<<x<<endl;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -