PTA 定义类模板实现2个数的算术运算

628 阅读1分钟

本题目要求定义类模板实现2个数的最大值、最小值、加、减、乘、除等算术运算,在main()函数中使用该类模板分别实例化为int型和double型的类,定义相关的对象,读入2个整数和2个浮点数,然后分别输出它们的最大值、最小值、加、减、乘、除的结果。

输入格式:

分别输入2组数字,第一行为2个整数,以空格分隔;第二行为2个浮点数,以空格分隔。

输出格式:

分2行分别输出整数和浮点数的运算结果,每行依次输出2个数的最大值、最小值、加、减、乘、除等算术运算。

输入样例:

30 2
2.1 3.2
结尾无空行

输出样例:

30 2 32 28 60 15
3.2 2.1 5.3 -1.1 6.72 0.65625
结尾无空行

代码:

#include <iostream>
using namespace std;//函数模板的定义 
template <class T>
class A{
	public:
		template <class T1>//每一个模板实现不同的功能,那个数据类型他们不是重点,
                                    //重点是显现什么功能,因为如果是数据类型他会自动转化 
                T1 Mas(T1 &x,T1 &y)
                {
                     if(x>y)
                         return x;
                     else
                         return y;
                }
                template <class T2>
                T2 Min(T2 &x,T2 &y)
                {
                     if(x>y)
                         return y;
                     else
                         return x;
                }
                template <class T3>
                T3 Mix1(T3 &x,T3 &y)
                {
                     return x+y;
                }
                template <class T4>
                T4 Mix2(T4 &x,T4 &y)
                {
                    return x-y;
                }
                template <class T5>
                T5 Mix3(T5 &x,T5 &y)
                {
                     return x*y;
                }
                template <class T6>
                T6 Mix4(T6 &x,T6 &y)
                {
                     return x/y;
                }	
};
int main() {
    int n,m;
    cin>>n>>m;
    double a,b;
    cin>>a>>b;
    A<int>q;//定义 
    A<double>p;
    cout << q.Mas(n,m) << " "
         << q.Min(n,m) << " "
         << q.Mix1(n,m) << " "
         << q.Mix2(n,m) << " "
         << q.Mix3(n,m) << " "
         << q.Mix4(n,m) << endl;
    cout << p.Mas(a,b) << " "
         << p.Min(a,b) << " "
         << p.Mix1(a,b) << " "
         << p.Mix2(a,b) << " "
         << p.Mix3(a,b) << " "
         << p.Mix4(a,b) << endl;
}

提交结果:

5.png