Problem C: C++第十章习题3
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 102 Solved: 53
[ Submit][ Status][ Web Board]
Description
类模板T_Vector实现向量运算的加减运算,在main函数中使用该类模板建立整型向量对象进行向量的加减运算。
Input
输入为若干组数据,每组数据用4行表示。第1行为1个字符(+、-中的一个),表示所要做的向量运算,第2行为一个小于100整数,表示向量的长度,第3行和第4行均为n个整数,各整数间用空格分隔,第3行和第4行表示两个向量。
Output
输出为若干组数据,每组数据用1行表示。输出长度为n的向量,向量的各分量之间用空格分隔(注意最后一个分量后不接空格)
Sample Input
+31 2 34 5 6-41 2 3 45 6 7 8
Sample Output
5 7 9-4 -4 -4 -4
HINT
#include <iostream>
using namespace std;
template <class T>
class T_Vector
{
protected:
T *t;
int n;
public:
T_Vector(int m):n(m)
{
t=new T[n];
}
void getVector();
void showVector();
T_Vector operator +(T_Vector<T> &);
T_Vector operator -(T_Vector<T> &);
};
template <typename T> void T_Vector<T>::getVector()
{
for (int i=0; i<n; i++)
{
cin>>t[i];
}
}
template<typename T> void T_Vector<T>::showVector()
{
for (int i=0; i<n-1; i++)
{
cout<<t[i]<<" ";
}
cout<<t[n-1]<<endl;
}
template <typename T> T_Vector<T> T_Vector<T>::operator+(T_Vector<T> &v1)
{
T_Vector <T>v2(n);
for (int i=0; i<n; i++)
{
v2.t[i]=t[i]+v1.t[i];
}
return v2;
}
template <typename T> T_Vector<T> T_Vector<T>::operator-(T_Vector<T> &v1)
{
T_Vector <T>v2(n);
for (int i=0; i<n; i++)
{
v2.t[i]=t[i]-v1.t[i];
}
return v2;
}
int main()
{
char type;
int n;
while (cin>>type)
{
cin>>n;
if (type=='+')
{
T_Vector<int> v1(n);
v1.getVector();
T_Vector<int> v2(n);
v2.getVector();
v1=v1+v2;
v1.showVector();
}
if (type=='-')
{
T_Vector<int> v1(n);
v1.getVector();
T_Vector<int> v2(n);
v2.getVector();
v1=v1-v2;
v1.showVector();
}
}
}