Problem C: C++第十章习题3
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 314 Solved: 186
[ 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
#include<iostream>
using namespace std;
template<typename T>
class vector
{
protected:
T a[1005];
T d[1005];
int n;
public:
vector(T c[],T h[],int x):n(x)
{
int i;
for(i=0;i<n;i++)
{
a[i]=c[i];
d[i]=h[i];
}
}
void add();
void jian();
};
template<typename T>
void vector<T>::add()
{
int i;
for(i=0;i<n;i++)
a[i]+=d[i];
cout<<a[0];
for(i=1;i<n;i++)
cout<<" "<<a[i];
cout<<endl;
}
template<typename T>
void vector<T>::jian()
{
int i;
for(i=0;i<n;i++)
a[i]-=d[i];
cout<<a[0];
for(i=1;i<n;i++)
cout<<" "<<a[i];
cout<<endl;
}
int main()
{
int i,j,m,n;
int a[1005],b[1005];
char k;
while(cin>>k)
{
switch(k)
{
case '+':
{cin>>m;
for(i=0;i<m;i++)
cin>>a[i];
for(i=0;i<m;i++)
cin>>b[i];
vector<int> p(a,b,m);
p.add();
break;
}
case '-':
{
cin>>m;
for(i=0;i<m;i++)
cin>>a[i];
for(i=0;i<m;i++)
cin>>b[i];
vector<int> p(a,b,m);
p.jian();
break;
}
}
}
}