目录
定义一个CVector类如下:
class CVector
{
private:
int *data; //存储n维向量
int n; //向量维数
public:
CVector(int n1, int *a);
CVector(CVector &c);
~CVector() { delete data; }
void print();
friend CVector Add(const CVector V1, const CVector V2);
friend CVector Sub(const CVector V1, const CVector V2);
};
要求如下:
根据输入和输出实现CVector类的成员函数,并分别实现友元函数Add、Sub来实现两向量的相加和相减。
输入
第一行,输入测试次数t
每组测试数据格式如下:
向量维数n
第一个n维向量值
第二个n维向量值
输出
对每组测试数据,输出它们相加和相减后的结果
输入样例1
2
3
1 2 3
4 5 6
5
1 2 3 4 5
-1 2 4 6 10
输出样例1
5 7 9
-3 -3 -3
0 4 7 10 15
2 0 -1 -2 -5
- #include<iostream>
- #include<string>
- #include<algorithm>
- #include<cmath>
- #include<iomanip>
- using namespace std;
- class CVector {
- private:
- int *data; //存储n维向量
- int n; //向量维数
- public:
- CVector(int n1, int *a);
- CVector(const CVector &c);
- ~CVector() {
- delete data;
- }
- void print();
- friend CVector Add(const CVector V1, const CVector V2);
- friend CVector Sub(const CVector V1, const CVector V2);
- };
- CVector::CVector(int n1,int *a){
- n=n1;
- data=new int[n1];
- for(int i=0;i<n1;i++)
- data[i]=a[i];
- }
- CVector::CVector(const CVector &c){
- n=c.n;
- data=new int[c.n];
- for(int i=0;i<c.n;i++)
- data[i]=c.data[i];
- }
- void CVector::print(){
- for(int i=0;i<n-1;i++)
- cout<<data[i]<<' ';
- cout<<data[n-1]<<endl;
- }
- CVector Add(const CVector V1, const CVector V2){
- CVector temp(V1);
- for(int i=0;i<temp.n;i++)
- temp.data[i]=V1.data[i]+V2.data[i];
- return temp;
- }
- CVector Sub(const CVector V1, const CVector V2){
- CVector temp(V1);
- for(int i=0;i<temp.n;i++)
- temp.data[i]=V1.data[i]-V2.data[i];
- return temp;
- }
- int main() {
- int t,n,i;
- cin>>t;
- while(t--){
- cin>>n;
- int *p=new int [n];
- for(i=0;i<n;i++)
- cin>>p[i];
- CVector a(n,p);
- for(i=0;i<n;i++)
- cin>>p[i];
- CVector b(n,p);
- Add(a,b).print();
- Sub(a,b).print();
- delete[] p;
- }
- }