问题就在于输入char类型时无法相加减,也无法求平均值。
//编程序创建一个类模板,可以对不同的数据类型的数组分别进行初始化、
//添加数据、求和、求平均值、显示数组等功能。
代码如下:
#include<iostream>
using namespace std;
//#include<string>
template <class T>
class number
{
public:
number(int i);//初始化数组
~number();
void addate(int len);//添加数据
T sum();//求和
T aver();//求平均值
void print();//显示数据
private:
double size;//数组数目
T* element;//数组
};
//template<class T>number<T>::number (){}
template <class T>number<T>::number (int i)//初始化数组
{
if (i > 1)
size = i;
else
size = 1;
//size = i;
element = new T[size];
}
template<class T>number<T>::~number()
{
delete []element;
}
//以上也可以写成template<typename T>number<T>::~number(){}
template<class T>void number<T>::addate(int len)
{
cout << "请输入数组:" << endl;
for (int i = 0; i < len; i++)
{
cin >> element[i];
}
}
template <class T>T number<T>::sum()
{
T summ = 0;//T summ = element[0];
for (int i = 0; i < size; i++)
{
summ += element[i];
}
//cout << ('A' + 'F') / 2;
return summ;//cout << "总和为:"<<summ<<endl;
}
template <class T>T number<T>::aver()
{
return sum() / size;//return sum()/size;会是int类型
}
template <class T>void number<T>::print()
{
for (int i = 0; i < size; i++)
{
cout << "element[" << i << "]=" << element[i] << " ";
}
}
//template <typename T>//一直出错原因:写了模板但是main函数没有用到
int main()
{
char z; int z1;
cout << "char类型数组数目有:";
cin >> z1;
number<char>c(z1);
c.addate(z1); //int temp = c.aver();
cout << "总和:" << c.sum() << endl;
cout << "平均值为:" << c.aver() << endl;
cout << "数组显示:";
c.print();
cout << endl;
int x;
cout << "int类型数组数目有:";
cin >> x;
number<int> a(x);
a.addate(x);
cout <<"总和:"<<a.sum()<<endl;
cout <<"平均值为:"<<a.aver()<<endl;
cout << "数组显示:" ;
a.print();
cout << endl;
double y;
cout << "double类型数组数目有:";
cin >> y;
number<double> b(y);
b.addate(y);
cout << "总和:" << b.sum() << endl;
cout << "平均值为:" << b.aver() << endl;
cout << "数组显示:";
b.print();
cout << endl;
}