[问题描述]设计-一个Money类,包含有元、分,能够实现两个Money的一(减)、>运算。
[程序要求]实现Money类两个对象之间的一、>运算;至少定义一个构造函数;定义显示输出函数;
[样例输入]5 20
380
[样例输出]
5.20
1.40
[样例输入说明]
第一行输入代表: 5.2元
第二行输入代表: 3.8元
[样例输出说明]
第一行输出代表:两个输入 金额中较大者第二行输出代表:两个输入金额之差
[问题描述]设计-一个Money类,包含有元、分,能够实现两个Money的一(减)、>运算。
[程序要求]实现Money类两个对象之间的一、>运算;至少定义一个构造函数;定义显示输出函数;
[样例输入]5 20
380
[样例输出]
5.20
1.40
[样例输入说明]
第一行输入代表: 5.2元
第二行输入代表: 3.8元
[样例输出说明]
第一行输出代表:两个输入 金额中较大者第二行输出代表:两个输入金额之差
输入格式应该是 元 空格 分 对吧?
#include<iostream>
class Money
{
public:
Money(int y, int f) : yuan(y), fen(f) {}
bool operator>(const Money& m) const
{
return yuan == m.yuan ? fen > m.fen : yuan > m.yuan;
}
Money operator-(const Money& m)const
{
int total = (yuan * 100 + fen) - (m.yuan * 100 + m.fen);
return Money(total / 100, total % 100);
}
int GetYuan()const { return yuan; }
int GetFen()const { return fen; }
private:
int yuan;
int fen;
};
std::ostream& operator<<(std::ostream& o, const Money& m)
{
o << m.GetYuan() << "." << m.GetFen();
return o;
}
int main()
{
int yuan, fen;
std::cin >> yuan >> fen;
Money m1(yuan, fen);
std::cin >> yuan >> fen;
Money m2(yuan, fen);
if (m2 > m1)
{
Money diff = m2 - m1;
std::cout << m2 << std::endl;
std::cout << diff << std::endl;
}
else
{
Money diff = m1 - m2;
std::cout << m1 << std::endl;
std::cout << diff << std::endl;
}
return 0;
}