#ifndef MAIN_CPP_CLASS_H
#define MAIN_CPP_CLASS_H
#include<iostream>

using namespace std;
class Vector{
    //TODO 实现输入、输出、加法、乘法四个运算符重载函数,以友元函数形式实现
    friend istream& operator>>(istream &in,Vector &obj);
    friend ostream& operator<<(ostream &os,const Vector &obj);
    friend Vector operator+(const Vector &v1,const Vector &v2);
    friend double operator*(const Vector &v1,const Vector &v2);
private:
    int dim;
    double *data;
public:
    Vector(int d=1,double * dat = nullptr);
    Vector(const Vector &obj);
    Vector &operator=(const Vector &obj);
    ~Vector(){delete [] data;}
};

#endif //MAIN_CPP_CLASS_H
#include "class.h"

//TODO
istream& operator>>(istream &in,Vector &obj){
    in>>obj.dim;
    for (int i = 0; i < obj.dim; ++i) {
        in>>obj.data[i];
    }
    return in;
}

ostream& operator<<(ostream &os,const Vector &obj){
    os<<"(";
    for (int i = 0; i < obj.dim-1; ++i) {
        os<<obj.data[i]<<",";
    }
    os<<obj.data[obj.dim-1];
    os<<")";
    return os;
}

Vector operator+(const Vector &v1,const Vector &v2){
    Vector tmp(v1.dim, v1.data);
    tmp.data=new double [tmp.dim];
    for (int i = 0; i <v1.dim; ++i) {
        tmp.data[i]=v1.data[i]+v2.data[i];
    }
    return tmp;
}

double operator*(const Vector &v1,const Vector &v2){
    double t=0;
    for (int i = 0; i < v1.dim; ++i) {
        t+=v1.data[i]*v2.data[i];
    }
    return t;
}

Vector::Vector(int d, double *dat) {
    dim=d;
    data=new double [d];
    for (int i = 0; i < dim; ++i) {
        data[i]=dat[i];
    }
}

Vector::Vector(const Vector &obj) {
    dim=obj.dim;
    data=new double [dim];
    for (int i = 0; i < dim; ++i) {
        data[i]=obj.data[i];
    }
}
#include <iostream>
#include "class.h"
using namespace std;
const int maxn = 100;
int main() {
    int n;
    double v[maxn];
    cin >> n;
    for(int i=0;i<n;i++) cin >> v[i];
    Vector v1(n,v);
    for(int i=0;i<n;i++) cin >> v[i];
    Vector v2(n,v);
    cout<<"两个向量相加为:"<<v1+v2<<endl;
    cout<<"两个向量相乘为:"<<v1*v2<<endl;

}