编程序创建一个类模板,可以对不同的数据类型的数组分别进行初始化、添加数据、求和、求平均值、显示数组等功能。
创建一个类模板,初始化、添加数据、求和、求平均值、显示数组这些功能用成员函数模板实现。
#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;
}
}