对象相加函数模板

题目描述

时钟类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),你需要从标准输入流中读入数据,并将答案输出至标准输出流中。

示例输入:

15 34 25
7 25 36
5 6 7
3 4 5

示例输出:

23 0 1\n
9 1 2\n

#include<iostream>
using namespace std;


class CClock {
	int a, b, c;
public:
	CClock(int aa,int bb,int cc):a(aa),b(bb),c(cc){}
	CClock(){}
	
	friend ostream &operator<<(ostream& os, CClock& x) {
		os << x.a << " " << x.b << " " << x.c << endl;
		return os;
	}
	template<class T>
	friend T add(T& x, T& y, int num);
};


class CRmb {
	int a, b, c;
public:
	CRmb(int aa, int bb, int cc) :a(aa), b(bb), c(cc) {}
	CRmb(){}
	
	friend ostream &operator<<(ostream& os, CRmb& x) {
		os << x.a << " " << x.b << " " << x.c << endl;
		return os;
	}
	template<class T>
	friend T add(T& x, T& y, int num);
};

template<class T>
T add(T& x, T& y, int num) {
	int n1 = x.a * num * num + x.b * num + x.c;
	int n2 = y.a * num * num + y.b * num + y.c;
	int sum = n1 + n2;
	int a = sum / num / num;
	int b = (sum % (num * num)) / num;
	int c = sum % num;
	return T(a, b, c);
}



int main() {
	int a, b, c;
	cin >> a >> b >> c;
	CClock c1(a, b, c);
	cin >> a >> b >> c;
	CClock c2(a, b, c);
	CClock c3;
	c3 = add(c1, c2, 60);
	cout << c3 ;
	cin >> a >> b >> c;
	CRmb r1(a, b, c);
	cin >> a >> b >> c;
	CRmb r2(a, b, c);
	CRmb r3;
	r3 = add(r1, r2, 10);
	cout << r3 ;
	//system("pause");
	return 0;

}

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值