⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rational.cpp

📁 求解有理数分式方程
💻 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 + -