用坐标实现一个数学中的向量类,可以处理任意维数的向量(动态分配),包括向量的加法,减法,数乘,内积,外积,测试你的类。

//用坐标实现一个数学中的向量类,可以处理任意维数的向量(动态分配),包括向量的加法,减法,数乘,内积,外积,测试你的类。
//#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;
    }
}

这里写图片描述

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Αиcíеиτеǎг

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值