#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;
}