分数的加减乘除
本实验通过对运算符“+”、“-”、“*”、“/”、“<<”的重载实现了分数的加减乘除功能,做完之后受益良多,故分享,与君共勉。
#include <iostream>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
class Rational
{
private:
int x,y;
public:
Rational() {x=1;y=1;}
Rational(int a,int b) {x=a;y=b;}
Rational operator+(Rational &r);
Rational operator-(Rational &r);
Rational operator*(Rational &r);
Rational operator/(Rational &r);
int Divisor(int a, int b);
friend ostream& operator<<(ostream &,Rational &);
};
Rational Rational::operator+(Rational &r)
{
return Rational(x*r.y+y*r.x,y*r.y);
}
Rational Rational::operator-(Rational &r)
{
return Rational(x*r.y-y*r.x,y*r.y);
}
Rational Rational::operator*(Rational &r)
{
return Rational(x*r.x,y*r.y );
}
Rational Rational::operator/(Rational &r)
{
return Rational(x*r.y,y*r.x);
}
int Divisor(int a,int b)
{
int z=b;
while(a%b!=0)
{
z=a%b;
a=b;
b=z;
}
return z;
}
ostream& operator<<(ostream &output,Rational &r)
{
int d=Divisor(r.x,r.y);
if(r.x==r.y) cout<<1;
else if(r.x==0) cout<<0;
else{
cout<<r.x/d<<"/"<<r.y/d;
}
}
int main(int argc, char** argv) {
Rational a(1,4),b(2,4),c;
c=a+b;
cout<<a<<"+"<<b<<"="<<c<<endl;
c=a-b;
cout<<a<<"-"<<b<<"="<<c<<endl;
c=a*b;
cout<<a<<"*"<<b<<"="<<c<<endl;
c=a/b;
cout<<a<<"/"<<b<<"="<<c<<endl;
return 0;
}