#include"pch.h"#include<math.h>#include<iostream>usingnamespace std;classvector{protected:float x[2];public:vector(){for(int i =0; i <2; i++)
x[i]=0;}vector(float*a,int n){for(int i =0; i < n; i++)
x[i]= a[i];}float*point(){return x;}virtualfloatdistance(vector &a, vector&b,int n){float sum =0;float*ap,*bp;
ap = a.point();
bp = b.point();for(int i =0; i < n; i++)
sum +=pow(ap[i]- bp[i],2);returnsqrt(sum);}~vector(){}
vector operator-(vector& c){
vector t;for(int i =0; i <2; i++)
t.x[i]= x[i]- c.x[i];return t;}floatoperator*(vector& c){float t =0;for(int i =0; i <2; i++)
t += x[i]* c.x[i];return t;}voidoperator=(vector c){for(int i =0; i <2; i++)
x[i]= c.x[i];}void show (int i){
cout <<"第"<< i <<"个向量"<<"(";for(int n =0; n <2; n++)
cout << x[n]<<",";
cout <<")";}};classvector2:public vector
{public:
vector2 (){for(int i =0; i <2; i++)
x[i]=0;}
vector2 (float*a,int n){for(int i =0; i < n; i++)
x[i]= a[i];}float*point(){return x;}floatdistance(vector &a, vector &b,int n){float sum =0;float*ap,*bp;
ap = a.point();
bp = b.point();for(int i =0; i < n; i++)
sum +=fabs(ap[i]- bp[i]);return sum;}};intmain(){float a[2]={1,2}, b[2]={3,4};
vector va(a,2);
vector vb(b,2);
va.show(1);
vb.show(2);
vector v3;
v3 = va - vb;
v3.show(3);float x;
x = va * vb;
cout <<"两向量的数量积:"<< x << endl;
vector *f1;float r;
f1 =&va;
r = f1->distance(va, vb,2);
cout <<"欧式距离为:"<< r << endl;
vector2 *f2;
vector2 a2;
f2 =&a2;
r = f2->distance(va, vb,2);
cout<<"一范距离为:"<< r << endl;return0;}