题目描述
时钟类CClock有时、分、秒;人民币类CRmb有元、角、分三个数据成员。试为这种类型的类对象定义一个两两相加的函数模板add,包括三个参数:2个对象和一个int表示进制。(要求不能用函数重载的方法)
主函数如下所示:
...
CClock c1(...), c2(...), c;
c = add(c1, c2, 60);
cout << c << endl;
CRmb r1(...), r2(...), r;
r = add(r1, r2, 10);
cout << r << endl;
输入
第一个时钟对象的时分秒
第二个时钟对象的时分秒
第一个人民币对象的元角分
第二个人民币对象的元角分
输出
两个时钟对象相加的结果
两个人民币对象相加的结果
IO模式
本题IO模式为标准输入/输出(Standard IO),你需要从标准输入流中读入数据,并将答案输出至标准输出流中。
#include<iostream>
#include<cstring>
#include<iomanip>
using namespace std;
class CClock
{
private:
int hour, minute, second;
public:
CClock(){}
CClock(int a,int b,int c):hour(a),minute(b),second(c){}
int get1()
{
return hour;
}
int get2()
{
return minute;
}
int get3()
{
return second;
}
};
class CRmb
{
private:
int yuan, jiao, fen;
public:
CRmb(){}
CRmb(int a,int b,int c):yuan(a),jiao(b),fen(c){}
int get1()
{
return yuan;
}
int get2()
{
return jiao;
}
int get3()
{
return fen;
}
};
template <class T>
void add(T &a, T &b,int jinzhi)
{
int sum1=0, sum2=0, sum3=0;
sum3 = a.get3() + b.get3();
if (sum3 >= jinzhi)
{
sum2++;
sum3 -= jinzhi;
}
sum2 += a.get2() + b.get2();
if (sum2 >= jinzhi)
{
sum1 += 1;
sum2 -= jinzhi;
}
sum1 += a.get1() + b.get1();
cout << sum1 << " " << sum2 << " " << sum3 << endl;
}
int main()
{
int a, b, c, m, n, p;
cin >> a >> b >> c;
cin >> m >> n >> p;
CClock p1(a, b, c);
CClock p2(m, n, p);
add(p1, p2, 60);
cin >> a >> b >> c;
cin >> m >> n >> p;
CRmb p3(a, b, c);
CRmb p4(m, n, p);
add(p3, p4, 10);
return 0;
}