如何让计算出的结果再次调用类内成员函数,好像输出还是原始数据

img


就是这一部分,如何让前面的结果正确输出呢?
输出成如下格式:

img

源代码如下:

#include <iostream>

using namespace std;

class Rational
{
    int numerator;   //分子 
    int denominator; //分母 
public:
    //变量初始化
    Rational(int fir=1,int sec=1):numerator(fir),denominator(sec)
    {
        if(denominator==0)denominator=1;
    }
    int imax(int m, int n)//计算最大公因数
    {
        return n ? imax(n, m % n) : m;
    }
    Rational add( Rational& r1, Rational& r2)
    {
        int fir=r1.denominator*r2.denominator;//分母
        //分子
        int sec=r1.numerator*r2.denominator+r1.numerator*r2.denominator;
        int m=imax(fir, sec);
        Rational r(sec/m, fir/m);
        return r;
    }
    Rational minus(Rational& r1, Rational& r2)
    {
        int fir=r1.denominator*r2.denominator;//分母
        //分子
        int sec=r1.numerator*r2.denominator-r1.numerator*r2.denominator;
        int m=imax(fir, sec);
        Rational r(sec/m, fir/m);
        return r;
    }
    Rational multi(Rational& r1, Rational& r2)
    {
        int fir=r1.denominator*r2.denominator;//分母
        //分子
        int sec=r1.numerator*r2.numerator;
        int m=imax(fir, sec);
        Rational r(sec/m, fir/m);
        return r;
    }
    Rational divide(Rational& r1, Rational& r2)
    {
        int fir=r1.denominator*r2.numerator;//分母
        //分子
        int sec=r1.numerator*r2.denominator;
        int m=imax(fir, sec);
        Rational r(sec/m, fir/m);
        return r;
    }
    void printFormal()
    {
        cout<<(numerator/imax(numerator,denominator))<<"/"<<(denominator/imax(numerator,denominator))<<endl;
        
    }
    void printBoth()
    {
        //cout<<(numerator/imax(numerator,denominator))<<"/"<<(denominator/imax(numerator,denominator))<<endl;
        cout<<numerator*1.0/denominator<<endl;
    }
};


int main()
{
    int firstN,firstD,secondN,secondD;
    char op;
    
//    cout<<"Please input the numerator of first Rational: ";
    cin>>firstN;
//    cout<<"Please input the denominator of first Rational: ";
    cin>>firstD;
//    cout<<"Please input the numerator of second Rational: ";
    cin>>secondN;
//    cout<<"Please input the denominator of second Rational: ";
    cin>>secondD;

    
    Rational r1(firstN,firstD),r2(secondN,secondD),r3;

    
    cin>>op;
    
    cout<<"the Formal format of the first rational is : ";
    r1.printFormal();
    cout<<"the Formal format of the second rational is : ";
    r2.printFormal();
    cout<<endl;
    
    switch(op)
    {
        case '+' :
            r3.add(r1,r2);
            r3.printBoth();
            break;
        case '-' :
            r3.minus(r1,r2);
            r3.printBoth();
            break;
        case '*':
            r3.multi(r1,r2);
            r3.printBoth();
            break;
        case '/':
            r3.divide(r1,r2);
            r3.printBoth();
            break;
        default:
            cout<<"Invalid operator!";
    }
    
    return 0;
}



这个add函数好像什么也没做吧,return的值你也没用上