#include <iostream>
using namespace std;
int gcd(int x, int y){
return x%y==0?y:gcd(y,x%y);
}
class Fraction
{
int num, den;
public:
Fraction(int x,int y=1):num(x),den(y){}
operator float() {return 1.0*num/den;}
Fraction &operator *(const Fraction& val){num*=val.num;den*=val.den;}
Fraction &operator *=(const Fraction& val){num*=val.num;den*=val.den;}
friend ostream& operator<<(ostream&out,const Fraction&val)
{
int t = gcd(val.num,val.den);
out<<(val.num)/t<<'/'<<val.den/t;
return out;
}
Fraction &operator /(const Fraction& val){num*=val.den;den*=val.num;}
Fraction &operator /=(const Fraction& val){num*=val.den;den*=val.num;}
};
int main() {
int a,b,c;
cin >> a >> b >> c;
Fraction f(a, b), g(c);
f *= g;
cout << f << endl;
f /= g;
cout << f << endl;
f = f * f;
cout << f << endl;
f = f / g;
cout << f << endl;
cout << (float) f << endl;
return 0;
}
上面用到了运算符重载,强转定义,友元函数,默认初始值。