一、题目描述
在题目向量1的代码上添加类CVector的友元函数add,计算两个向量的和(对应分量相加)。
add定义如下:
CVector add(const CVector v1, const CVector v2) //函数头不可修改。
主函数输入数据,生成两个向量对象v1,v2,调用add(v1, v2).print()输出向量v1 + v2的计算结果。(假设print()为CVector类中的输出函数。)
可根据需要,为类CVector添加拷贝构造函数及其它成员函数。
二、输入与输出
1.输入
第一行,输入测试次数t
每组测试数据格式如下:
向量维数n
第一个n维向量值
第二个n维向量值
2
3
1 2 3
4 5 6
5
1 2 3 4 5
-1 2 4 6 10
2.输出
对每组测试数据,输出两个n维向量与它们的和
1 2 3
4 5 6
5 7 9
1 2 3 4 5
-1 2 4 6 10
0 4 7 10 15
三、参考代码
#include<iostream>
#include<string>
using namespace std;
class cv
{
private:
int *data;
int n;
public:
cv(){};
cv(int n1,int *a)
{
n=n1;
data=new int[n1];
for(int i=0;i<n1;i++)
{
data[i]=a[i];
}
};
friend cv add(const cv v1,const cv v2)
{
cv v3;
v3.n=v1.n;
v3.data=new int[v3.n];
for(int i=0;i<v3.n;i++)
{
v3.data[i]=v1.data[i]+v2.data[i];
}
return v3;
}
void pri()
{
for(int i=0;i<n;i++)
{
cout<<data[i];
if(i<n-1)
{
cout<<" ";
}
}
cout<<endl;
}
};
int main()
{
int num;
cin>>num;
int t;
while(num--)
{
cin>>t;
int *a1=new int[t];
int *a2=new int[t];
for(int i=0;i<t;i++)
{
cin>>a1[i];
}
for(int k=0;k<t;k++)
{
cin>>a2[k];
}
cv b1(t,a1);
cv b2(t,a2);
b1.pri();
b2.pri();
cv b3=add(b1,b2);
b3.pri();
}
return 0;
}
四、题解思路
注意输出格式!