关于#c++#的问题:问题遇到的现象和发生背景

问题遇到的现象和发生背

代码跑不动,总是声明不了,(顺便解答一下运算符<<重载怎么写)

操作环境、软件版本等信息

dev-c++

尝试过的解决方法
#include<iostream>
#include<cmath>
using namespace std;

class Mony//定义Mony基类 
{
    public:
        Mony(int A=0,int B=0,int C=0)
        {
            yuan=A;
            jiao=B;
            fen=C; 
            int x,y,z;
        x=a.yuan*100+a.jiao*10+a.fen;
        y=b.yuan*100+a.jiao*10+a.fen;
        } 
    friend Mony operator+(Mony&,Mony&b)
    {
        Mony c;
        z=x+y;
        c.yuan=z/100;
        c.jiao=(z-c.yuan*100)/10;
        c.fen=z%10;
        return c;    
    }
    friend Mony operator-(Mony&,Mony&b)
    {
        Mony d;
        
        z=x-y;
        if(z<0)
        {
            z=-z;
        }
        d.yuan=z/100;
        d.jiao=(z-c.yuan*100)/10;
        d.fen=z%10;
        return d;    
    }
    friend Mony operator>(Mony&,Mony&b)
    {
        Mony e;
    
        if(x>=y)
        {
            e=a;
        }
        else
        {
            e=b;
        }
        return e;
    }
    friend Mony operator<(Mony&,Mony&b)
    {
        Mony f;
        
        if(x<y)
        {
            f=a;
        }
        else
        {
            f=b;
        }
        return f;
    }
int yuan, jiao, fen; 
};
void display(Mony&a,Mony&b)
{
    cout<<"数额较大的为: "<<e.yuan<<"."<<e.jiao<<e.fen<<endl;
    cout<<"数额较小的为: "<<f.yuan<<"."<<f.jiao<<f.fen<<endl;
    cout<<"两数额之和为: "<<c.yuan<<"."<<c.jiao<<c.fen<<endl;
    cout<<"两数额之差为: "<<d.yuan<<"."<<d.jiao<<d.fen<<endl; 
} 
int main()
{
    int A,B,C,D,E,F;
    cin>>A>>B>>C>>D>>E>>F;
    Mony a(A,B,C),b(D,F,E);
    display(a,b)
    return 0;
}

我想要达到的结果

问题描述】设计一个Money类,能够实现两个Money的-(减) 、>运算。

【程序必做项】

1- 该类包含三个属性元、角、分。

2- 至少定义一个构造函数;

3- 重载Money类两个对象之间的 +、-、>、<运算;

4- 定义显示输出函数;

5- 自定义main函数,完成以上功能的测试

【程序选做项】

1- 重载++ 运算符

2- 重载<< 与>>

大概改了下

#include<iostream>
using namespace std;

class Money
{
    public:
        Money(int A=0,int B=0,int C=0)
        {
            yuan=A;
            jiao=B;
            fen=C;
            format();
        }

        void format()
        {
            if(fen>=10)
            {
                jiao+=fen/10;
                fen%=10;
            }
            if(jiao>=10)
            {
                yuan+=jiao/10;
                jiao%=10;
            }
        }

        void print()
        {
            if(yuan!=0)
                cout << yuan <<"元";

            if(jiao!=0)
                cout << jiao <<"角";

            if(fen!=0)
                cout << fen <<"分";
            cout << endl;
        }

        friend Money operator+(Money &a,Money &b)
        {
            Money c;
            c.yuan=a.yuan+b.yuan;
            c.jiao=a.jiao+b.jiao;
            c.fen=a.fen+b.fen;
            c.format();
            return c;
        }
        friend Money operator-(Money &a,Money &b)
        {
            Money c;
            c.fen=(a.yuan-b.yuan)*100+(a.jiao-b.jiao)*10+(a.fen-b.fen);
            c.format();
            return c;
        }

        friend bool operator>(Money &a,Money &b)
        {
            if(a.yuan!=b.yuan) return a.yuan > b.yuan;

            if(a.jiao!=b.jiao) return a.jiao > b.jiao;

            if(a.fen!=b.fen) return a.fen > b.fen;

            return false;
        }
        friend bool operator<(Money &a,Money &b)
        {
            if(a.yuan!=b.yuan) return a.yuan < b.yuan;

            if(a.jiao!=b.jiao) return a.jiao < b.jiao;

            if(a.fen!=b.fen) return a.fen < b.fen;

            return false;
        }
        ////
        friend ostream &operator<<(ostream &o,Money &a)
        {
            if(a.yuan!=0)
                o << a.yuan <<"元";

            if(a.jiao!=0)
                o << a.jiao <<"角";

            if(a.fen!=0)
                o << a.fen <<"分";

            return o;
        }

        friend istream &operator>>(istream &i,Money &a)
        {
            i>>a.yuan>>a.jiao>>a.fen;
            a.format();
            return i;
        }
        ////

    private:
        int yuan, jiao, fen;
};

/*

12 55 44
2 8 7

//*/
int main()
{
    Money a,b,c;
    cin >> a >> b;
    cout << a << endl << b << endl;
    a.print();

    c=a+b;
    cout << "两数额之和为: " << c << endl;

    c=a-b;
    cout << "两数额之差为: " << c << endl;

    c=(a>b)?a:b;
    cout << "数额较大的为: " << c << endl;

    c=(a<b)?a:b;
    cout << "数额较小的为: " << c << endl;

    return 0;
}

img