题目描述
在题目向量1的代码上添加类CVector的友元函数add,计算两个向量的和(对应分量相加)。
add定义如下:
CVector add(const CVector v1, const CVector v2) //函数头不可修改。
主函数输入数据,生成两个向量对象v1,v2,调用add(v1, v2).print()输出向量v1 + v2的计算结果。(假设print()为CVector类中的输出函数。)
可根据需要,为类CVector添加拷贝构造函数及其它成员函数。
输入
第一行,输入测试次数t
每组测试数据格式如下:
向量维数n
第一个n维向量值
第二个n维向量值
输出
对每组测试数据,输出两个n维向量与它们的和
输入样例1
2
3
1 2 3
4 5 6
5
1 2 3 4 5
-1 2 4 6 10
输出样例1
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>
using namespace std;
class cvector
{
private:
int* data;
int n;
public:
friend cvector add(const cvector v1, const cvector v2);
cvector() { ; }
cvector(int n1, int* a)
{
n = n1;
data = new int[n];
for (int i = 0; i < n1; i++)
{
data[i] = a[i];
}
}
//~cvector() { delete[]data; }
void print();
};
cvector add(const cvector v1, const cvector v2)
{
int sum=v1.n;
int num[100];
for (int i = 0; i < sum; i++)
{
num[i] = v1.data[i] + v2.data[i];
}
cvector c(sum, num);
return c;
}
void cvector::print()
{
cout << data[0];
for (int i = 1; i < n; i++)
{
cout << ' ' << data[i];
}
cout << endl;
}
int main()
{
int t,n;
cin >> t;
while (t--)
{
cin >> n;
int* num1 = new int[n];
int* num2 = new int[n];
for (int i = 0; i < n; i++)
{
cin >> num1[i];
}
for (int i = 0; i < n; i++)
{
cin >> num2[i];
}
cvector a(n, num1);
cvector b(n, num2);
a.print();
b.print();
cvector c = add(a, b);
c.print();
delete[]num1;
delete[]num2;
}
return 0;
}