//用坐标实现一个数学中的向量类,可以处理任意维数的向量(动态分配),包括向量的加法,减法,数乘,内积,外积,测试你的类。
//#include <tchar.h>
#include<iostream>
#include<vector>
using namespace std;
class vectors
{
public:
vectors(void);
~vectors(void);
vectors(int *vec,int n);
vectors(vectors &a);
friend vectors operator + (vectors a, vectors b);//加法
friend vectors operator - (vectors a, vectors b);//减法
friend vectors operator ++(vectors a);//前自增
friend vectors operator ++(vectors a,int n);//后自增
friend vectors operator --(vectors a);//前自减
friend vectors operator --(vectors a,int n);//后自减
friend vectors operator * (vectors a,vectors b);//数乘
void Display();//显示函数
private:
int * Vec;//向量指针
int N;//维数
};
int main()
{
int a[4]={1,2,3,4};
int b[4]={10,20,30,40};
int c[3]={1,2,3};
vectors v1(a,4);
vectors v2(b,4);
vectors v3(c,3);
cout<<"向量1的坐标:"<<endl;
v1.Display();
cout<<"向量2的坐标:"<<endl;
v2.Display();
vectors v4;
v4 =v1+v2;
cout<<"相加后的向量坐标:"<<endl;
v4.Display();
vectors v5;
v5 =v1*v2;
cout<<"相乘后的向量坐标:"<<endl;
v5.Display();
vectors v6;
v6=v1+v3;
vectors v7;
v7=v1*v3;
system("pause");
return 0;
}
vectors::vectors(void)
{
}
vectors::vectors (vectors &a)
{
Vec=new int[a.N];
for(int i=0;i<a.N;i++)
{
Vec[i]=a.Vec[i];
}
N=a.N;
}
vectors::~vectors(void)
{
//delete Vec[];
}
vectors::vectors(int *vec, int n)
{
Vec=new int[n];
for(int i=0;i<n;i++)
{
Vec[i]=vec[i];
}
N=n;
}
void vectors::Display()
{
cout<<"向量坐标:(";
for(int i=0;i<N-1;i++)
{
cout<<Vec[i];
cout<<",";
}
cout<<Vec[N-1];
cout<<")";
cout<<endl;
}
vectors operator + (vectors a, vectors b)
{
if(a.N!=b.N)
{
cout<<"维数不相同不能相加!"<<endl;
return a;
}
else
{
vectors temp(a);
for(int i=0;i<a.N;i++)
{
temp.Vec[i]=a.Vec[i]+b.Vec[i];
}
return temp;
}
}
vectors operator - (vectors a, vectors b)
{
if(a.N!=b.N)
{
cout<<"维数不相同不能相减!"<<endl;
return a;
}
else
{
vectors temp(a);
temp.N=a.N;
for(int i=0;i<a.N;i++)
{
(temp.Vec)[i]=(a.Vec)[i]-(b.Vec)[i];
}
return temp;
}
}
vectors operator ++(vectors a)
{
for(int i=0;i<a.N;i++)
{
a.Vec[i]++;
}
return a;
}
vectors operator ++(vectors a,int n)
{
vectors temp(a);
for(int i=0;i<a.N;i++)
{
a.Vec[i]++;
}
return temp;
}
vectors operator --(vectors a)
{
for(int i=0;i<a.N;i++)
{
a.Vec[i]--;
}
return a;
}
vectors operator --(vectors a,int n)
{
vectors temp(a);
for(int i=0;i<a.N;i++)
{
a.Vec[i]--;
}
return temp;
}
vectors operator * (vectors a,vectors b)
{
if(a.N!=b.N)
{
cout<<"为数不同不能相乘!"<<endl;
return a;
}
else
{
vectors temp(a);
for(int i=0;i<a.N;i++)
{
temp.Vec[i]=a.Vec[i] * b.Vec[i];
}
return temp;
}
}
用坐标实现一个数学中的向量类,可以处理任意维数的向量(动态分配),包括向量的加法,减法,数乘,内积,外积,测试你的类。
最新推荐文章于 2022-11-28 23:47:40 发布