1、分数的化简 ;
2、分数的加法;
3、分数的减法;
4、分数的乘法;
5、分数的除法;
6、分数的输出。
struct fraction
{
int up;
int down;
};
int gcd(int a,int b)
{
if(b==0) return a;
else return gcd(b,a%b);
}
//1、分数的化简
fraction reduction(fraction a)
{
if(a.down<0)
{
a.down=-a.down;
a.up=-a.up;
}
if(a.up==0) a.down=1;
else
{
int b=gcd(a.up,a.down);
a.down/=b;
a.up/=b;
}
return a;
}
//2、分数的加法
fraction add(fraction a,fraction b)
{
fraction ans;
ans.up=a.up*b.down+b.up*a.down;
ans.down=a.down*b.down;
return reduction(ans);
}
//3、分数的减法
fraction minu(fraction a,fraction b)
{
fraction ans;
ans.up=a.up*b.down-b.up*a.down;
ans.down=a.down*b.down;
return reduction(ans);
}
//4、分数的乘法
fraction multi(fraction a,fraction b)
{
fraction ans;
ans.up=a.up*a.down;
ans.down=a.down*b.down;
return reduction(ans);
}
//5、分数的除法
fraction divide(fraction a,fraction b)
{
fraction ans;
ans.up=a.up*b.down;
ans.down=a.down*b.up;
return reduction(ans);
}
//6、分数的输出
fraction showResult(fraction a)
{
a=reduction(a);
if(a.down==1) cout<<"a.up";
else if(abs(a.up)>a.down) cout<<a.up/a.down<<" "<<abs(a.up)%a.down<<'/'<<a.down;
else cout<<a.up<<'/'<<a.down;
}