【大一下程序设计基础实验】数组类模板

编程序创建一个类模板,可以对不同的数据类型的数组分别进行初始化、添加数据、求和、求平均值、显示数组等功能。

创建一个类模板,初始化、添加数据、求和、求平均值、显示数组这些功能用成员函数模板实现。


#include <iostream>
using namespace std;
template<typename T>
class Array
{
private: int size; T* ep;
public:
    Array(int s)
    {
        if (s > 1)size = s;
        else size = 1;
        ep = new T[size];
        for (int i = 0; i < size; i++)
        {
            cout << "请输入第" << i + 1 << "个元素\n";
            cin >> ep[i];
        }
    }
    ~Array() {
        delete []ep;
        ep = NULL;
    }
    void Print()
    {
        for (int i = 0; i < size; i++)
            cout << ep[i]<<'\t';
        cout << endl;
    }
    T Sum()
    {
        T summ=0;
        for (int i = 0; i < size; i++)
            summ += ep[i];
        return summ;
    }
    T Ave()
    {
        return (Sum()/size);
    }
    void Create()
    {
        cout << "请输入你想要加入的元素\n";
        T x;
        cin >> x;
        T* ep1;
        ep1 = new T[size + 1];
        for (int i = 0; i < size; i++)
        {
            ep1[i] = ep[i];
        }
        ep1[size] = x;
        delete ep;
        ep = new T[size+1];
        for (int i = 0; i <=size; i++)
            ep[i] = ep1[i];
        size++;
    }
};
int main()
{
    int cl;
    cout << "请选择你需要的数组类型:(1.int 2.double 3.char)\n";
    cin >> cl;
    cout << "请输入你需要的数组长度:\n";
    int n;
    cin >> n;
    if (cl == 1) {
        Array<int>ary(n); ary.Create();
        ary.Print();
        cout << "平均值为:" << ary.Ave() << endl;
        cout << "和为:" << ary.Sum() << endl;
    }
    else if (cl == 2) {
        Array<double>ary(n); ary.Create();
        ary.Print(); 
        cout << "平均值为:" << ary.Ave() << endl;
        cout << "和为:" << ary.Sum() << endl;
    }
    else if (cl == 3) {
        Array<char>ary(n);
        ary.Create();
        ary.Print();
        cout << "平均值为:" << ary.Ave() << endl;
        cout << "和为:" << ary.Sum() << endl;
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值