c++模板-数组类

题目:编写一个程序,使用类模板对数组元素进行排序、倒置、查找和求和。

提示】:设计一个类模板。
Template
Class Array{

}
具有对数组元素进行排序、倒置、查找和求和功能,然后产生类型实参分别为int型和double类型的两个模板类,分别对整型数组和双精度数组完成所要求的操作

代码如下:

/*
编写一个程序,使用类模板对数组元素进行排序,倒置、查找和求和
具有对数组元素进行排序,倒置、查找和求和功能,
然后产生类型实参分别为int型和double型的两个模板类,
分别对整型数组与双精度数组完成所要求的操作
*/
#include
using namespace std;
const int SIZE=100;//采用const只读变量当作全局变量

//以下是模版类的定义和实现  
template <class Type>
class Array{
private:
    int l, z;
    Type a[SIZE];//模版变量
public:
    Array(Type *b, int n)
    {
        int i;
        l = n;
        for(i=0;i<l;i++)
        {
            a[i] = b[i];
            cout << a[i] << " "; 
        } 
        cout << endl;
    }

    void sort();
    void reverse();
    void find(Type t);
    void sum();    
        
};

template <class Type>
void Array<Type>::sort(){ 
    Type c[SIZE];
    int i, j, m;
    for(i=0;i<l;i++)
    {
        c[i] = a[i];    
    }
    // 排序 升序排序 
    for(j=0;j<l-1;j++)
    {
        for(i=0;i<l-1;i++)
        {
            if(c[i]>c[i+1])
            {
                m = c[i];
                c[i] = c[i+1];
                c[i+1] = m;
            }
        }
    }
    
    // 输出排序后的数据  
    for(i=0;i<l;i++)
    {
        cout << c[i] << "  ";    
    }
    cout<< endl;
    
}
        
template <class Type>
void Array<Type>::reverse(){
    int i;
    Type d[SIZE];                // 声明数组 
    for(i=0;i<l;i++)
    {
        // int d[i] = a[l-1-i];
        d[i] = a[l-1-i];
        cout << d[i] << "  ";
    }
    cout << endl;
}

template <class Type>
void Array<Type>::find(Type t){
    int e = 0;
    int flag = 0;            // 0表示未找到 
    for(int i=0;i<l;i++)
    {
        if(a[i]==t)
        {
            flag = 1;
            cout << "是第" << i+1 << "个元素" << endl;
            e = i; 
            break;    
        }
    }
    
    // 判断是否未找到该元素 
    if(flag==0)
    {
        cout << "未找到该元素" << endl;
    }
    
}

template <class Type>
void Array<Type>::sum(){
    int i;
    Type res = 0;            // res应该初始化        
    for(i=0;i<l;i++)
    {
        res += a[i];
    }
    
    cout << "数组和为:" << res <<endl;
}

int main()
{
    int i, x, y, q;
    double p;
    
    // 构建初始数组 
    cout << "请输入两种类型数组元素个数: " << endl;
    cin >> x >> y;
    int *a;
    double *b;
    a = new int[x];
    b = new double[y];
    cout<<"请输入int型数组元素"<<endl;
    for(i=0;i<x;i++)
    {
        cin >> a[i];
    }
    cout << "请输入double型数组元素" << endl;
    for(i=0;i<y;i++)
    {
        cin >> b[i];
    }
    
    // 用初始数组初始化 模板类数组 
    Array<int> c(a,x);
    Array<double> d(b,y);
    
    // int型数组功能展示 
    cout << "int 型数组:" << endl;
    cout << "排序:" << endl;
    c.sort();
    cout << "倒置:" << endl;
    c.reverse();
    cout << "请输入要查找的元素: ";
    cin >> q;
    c.find(q);
    cout << "求和:" << endl;
    c.sum();
    
    // double型数组功能展示 
    cout << "double 型数组:" << endl;
    cout << "排序:" << endl;
    d.sort();
    cout << "倒置:" << endl;
    d.reverse();
    cout << "请输入要查找的元素: ";
    cin >> p;
    d.find(p);
    cout << "求和:" << endl;
    d.sum();
    
    // 清除数据 
    delete []a;
    delete []b;
    
    return 0;
    
}

截图如下
c++模板-数组类_第1张图片

你可能感兴趣的:(c++语言基础)