代码跑不动,总是声明不了,(顺便解答一下运算符<<重载怎么写)
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;
}