• Problem B: 数量的类模板


    Description

    定义一个类模板Data,用于包装C++中的基本数据类型int和double。它包括:

    1. 数据成员value为该对象所包装的值。

    2. 无参构造函数(初始化value为0)和带参构造函数。

    3. 重载的运算符:>、<、+以及<<。其中"+"返回和,不改变两个操作数的值。

    4. 成员函数setValue用于设置value的值。

    定义另一个类模板GetResult,它只有3个静态成员函数(以下“T"为类型参数):

    1. static Data<T> getSum(Data<T> *arr, int num):求存储在arr中的num个Data对象的和,并返回由这个和构成的一个Data对象。

    2. static Data<T> getMax(Data<T> *arr, int num):求存储在arr中的num个Data对象的最大值,并返回这个最大值对应的对象。

    3.  static Data<T> getMin(Data<T> *arr, int num):求存储在arr中的num个Data对象的最小值,并返回这个最小值对应的对象。

    Input

    输入分多行。

    第一行M>0表示有M个测试用例。

    只有的M行,每行开始有一个字母i或d,第二个是正整数N>0。如果第一个字母是i,则表示本行包括N个int类型的数据;如果第一个字母为d,则表示本行有N个double类型的数据。

    Output

    除前6行输出外,其他输出的行数等于M。其中每一行输出3个数据:对应测试用例的最大值、最小值以及和。实数输出定点小数,且只输出2位小数。

    Sample Input

    3 i 3 1 2 3 d 3 1.1 2.2 3.3 i 1 10

    Sample Output

    a + b = 30 max(a, b) = 20 min(a, b) = 10 c + d = -0.96 max(c, d) = 3.14 min(c, d) = -4.10 3 1 6 3.30 1.10 6.60 10 10 10

    HINT

    Append Code

    #include<iostream>
    #include<iomanip>
    using namespace std;
    template<class T>
    class Data
    {
    private:
        T value;
    public:
        Data(T a=0):value(a){}
        bool operator>(Data<T> a){return value>a.value;}
        bool operator<(Data<T> a){return value<a.value;}
        Data operator+(Data<T> a){return Data(value+a.value);}
        friend ostream& operator<<(ostream &os,const Data &a)
        {
            os<<fixed<<setprecision(2)<<a.value;
            return os;
        }
       void  setValue(T a){value=a;}
    };
    template<class T>
    class GetResult
    {
    private:
    public:
      static Data<T> getSum(Data<T> *arr, int num)
       {
           Data<T> cpp(arr[0]);//模板这样的必须有<>
           for(int i=1;i<num;i++)
            cpp=cpp+arr[i];//不可以用+=
           return cpp;
       }
     static Data<T> getMax(Data<T> *arr, int num)
       {
           Data<T> cpp(arr[0]);
           for(int i=1;i<num;i++)
            if(arr[i]>cpp)
                cpp=arr[i];
           return cpp;
       }
      static Data<T> getMin(Data<T> *arr, int num)
       {
           Data<T> cpp(arr[0]);
           for(int i=1;i<num;i++)
            if(arr[i]<cpp)
                cpp=arr[i];
           return cpp;
       }
    };
    int main()
    {
        Data<int> iData[1001];
        Data<double> dData[1001];
        int cases, num;
        char ch;
        int u;
        double v;
        Data<int> a(10), b(20);
        Data<double> c(3.14), d(-4.1);
        cout<<"a + b = "<<(a + b)<<endl;
        cout<<"max(a, b) = "<<(a > b ? a : b)<<endl;
        cout<<"min(a, b) = "<<(a < b ? a : b)<<endl;
        cout<<"c + d = "<<(c + d)<<endl;
        cout<<"max(c, d) = "<<(c > d ? c : d)<<endl;
        cout<<"min(c, d) = "<<(c < d ? c : d)<<endl;
        cin>>cases;
        for (int i = 0; i < cases; i++)
        {
            cin>>ch;
            cin>>num;
            for (int j = 0; j < num; j++)
            {
                if (ch == 'i')
                {
                    cin>>u;
                    iData[j].setValue(u);
                }
                else if (ch == 'd')
                {
                    cin>>v;
                    dData[j].setValue(v);
                }
            }
            if (ch == 'i')
            {
                cout<<GetResult<int>::getMax(iData, num);
                cout<<" "<<GetResult<int>::getMin(iData, num);
                cout<<" "<<GetResult<int>::getSum(iData, num)<<endl;
            }
            else if (ch == 'd')
            {
                cout<<GetResult<double>::getMax(dData, num);
                cout<<" "<<GetResult<double>::getMin(dData, num);
                cout<<" "<<GetResult<double>::getSum(dData, num)<<endl;
            }
        }
        return 0;
    }

  • 相关阅读:
    windows phone 自动隐藏的Popup from http://www.cnblogs.com/LoveJenny/archive/2011/07/14/2105869.html
    Linq update
    Windows Phone 7 MVVM模式数据绑定和传递参数 from:http://www.cnblogs.com/linzheng/archive/2011/03/27/1997086.html
    web 常见攻击与防护
    SFSA
    HDU 3530
    一笔话问题
    学习技巧
    练题宝典
    雪花
  • 原文地址:https://www.cnblogs.com/TogetherLaugh/p/6636217.html
Copyright © 2020-2023  润新知