首页 新闻 会员 周边 捐助

用运算符重载实现两向量的直积, 即 (x, y, z) * (a, b, c) = (x*a, y*b, z*c) 要求如下,请大神指点!

0
悬赏园豆:30 [待解决问题]

C++代码实现向量类 Vector,  它有一个成员是维度 int dimension, 还有一个数组存了它的数据, 用运算符重载的方式实现两个向量之间的直积,(x, y, z) * (a, b, c) = (x*a, y*b, z*c)这种形式,注意维度 int dimension . 向量维度是任意整数个。。。

ccwRadar的主页 ccwRadar | 初学一级 | 园豆:97
提问于:2014-07-17 16:17
< >
分享
所有回答(2)
0

运算符重载会吗?

两向量的直积会吗?

Launcher | 园豆:45050 (高人七级) | 2014-07-17 16:19

嗯,这个会,但是实现不了,能否贴出来让我看看?

支持(0) 反对(0) ccwRadar | 园豆:97 (初学一级) | 2014-07-17 16:20

@王传传: 你会哪个?

支持(0) 反对(0) Launcher | 园豆:45050 (高人七级) | 2014-07-17 16:22

@Launcher: 。。。。。。。。。。原题比这个复杂,其他的都完成了,就还有一个直积没有实现。。。我看你也不会

支持(0) 反对(0) ccwRadar | 园豆:97 (初学一级) | 2014-07-17 16:24

@王传传: 就是你会“运算符重载”,但是不会计算两个向量的直积,对吗?

支持(0) 反对(0) Launcher | 园豆:45050 (高人七级) | 2014-07-17 16:25

@Launcher: 运算符重载是要重载** 这个确实不会

支持(0) 反对(0) ccwRadar | 园豆:97 (初学一级) | 2014-07-17 16:26

@Launcher: @Launcher: 计算向量的直积,运算符重载是要重载哪个符号?

支持(0) 反对(0) ccwRadar | 园豆:97 (初学一级) | 2014-07-17 16:27

@王传传: friend Vector operator *(Vector &A,Vector &B)

支持(0) 反对(0) Launcher | 园豆:45050 (高人七级) | 2014-07-17 17:05

@Launcher: 还是错的,我试过了, 一样的错

支持(0) 反对(0) ccwRadar | 园豆:97 (初学一级) | 2014-07-17 17:17

@王传传: 请把编译的错误提示给贴出来。

支持(0) 反对(0) Launcher | 园豆:45050 (高人七级) | 2014-07-17 17:18

@Launcher: 

支持(0) 反对(0) ccwRadar | 园豆:97 (初学一级) | 2014-07-17 17:22

@王传传: 你得学学英文,注意 1> 后面的描述,翻译成中文就是:无法解析的外部符号 "public: __thiscall Vector::~Vector(void)",该符号在方法 "class Vector __cdecl operator*(class Vector &,class Vector &)" 中被引用。

然后,还需要我针对上面的中文描述告诉你你的代码中的问题吗?

支持(0) 反对(0) Launcher | 园豆:45050 (高人七级) | 2014-07-17 17:28

@Launcher: 嗯,问题就是出在这,原题要求求向量的点积,重载了*,但是求直积的时候还是重载*这个,肯定出问题,不知道怎么解决~

支持(0) 反对(0) ccwRadar | 园豆:97 (初学一级) | 2014-07-17 17:50

@Launcher:下面有我写的代码

支持(0) 反对(0) ccwRadar | 园豆:97 (初学一级) | 2014-07-17 17:51

@王传传: 我很遗憾,虽然我做了翻译吧,那我还是贴代码吧。

class Vector

{

pulbic:

     ~Vector();

 

        friend Vector operator *(Vector &,Vector &);
}

Vector::~Vector()

{

}

Vector operator *(Vector &A,Vector &B)
{
    Vector C;
    for(int i=0;i<A.size;i++)
    {
        C.v[i]=A.v[i]*B.v[i];
        C.size++;
    }
    return C;
}

支持(0) 反对(0) Launcher | 园豆:45050 (高人七级) | 2014-07-17 17:52

@Launcher: 还是一样报错啊~~~

支持(0) 反对(0) ccwRadar | 园豆:97 (初学一级) | 2014-07-17 18:34

@Launcher: 按你的意思添加了析构函数,但是不顶用啊,报一样的错

支持(0) 反对(0) ccwRadar | 园豆:97 (初学一级) | 2014-07-17 18:38

@王传传: 

class Vector
{
public:
    ~Vector();
    friend Vector operator * (Vector &A, Vector &B);
};

Vector::~Vector()
{
}

 Vector operator * (Vector &A, Vector &B)
{
    Vector C;
    return C;
}


就这段代码,我机器上编译没有问题,从语法上也没什么错误。针对的是你截图中提示的 Vector::~Vector(void) 是无法解析的引用的错误。

支持(0) 反对(0) Launcher | 园豆:45050 (高人七级) | 2014-07-18 09:14

@Launcher: 这个还是没有实现~~~

支持(0) 反对(0) ccwRadar | 园豆:97 (初学一级) | 2014-07-18 11:20

@王传传: 你是说

class Vector
{
public:
    ~Vector();
    friend Vector operator * (Vector &A, Vector &B);
};

Vector::~Vector()
{
}

Vector operator * (Vector &A, Vector &B)
{
    Vector C;
    return C;
}

在你的机器上编译不通过吗?

支持(0) 反对(0) Launcher | 园豆:45050 (高人七级) | 2014-07-18 11:21

@Launcher: 嗯 是的

支持(0) 反对(0) ccwRadar | 园豆:97 (初学一级) | 2014-07-18 11:23

@ccwRadar: 那我没法帮你了,自己琢磨吧。

支持(0) 反对(0) Launcher | 园豆:45050 (高人七级) | 2014-07-18 11:29
0

算法思路如下:(A为向量1的数组,B为向量2的数组,C取的结果数组)

1,定义个泛型/数组A,存放输入的向量1元素;泛型/数组B,存放输入的向量2元素.

2,定义个泛型/数组C,for循环取A[i]*B[j],结果放在数组C

3,最后打印输出即可。

伏草惟存 | 园豆:1420 (小虾三级) | 2014-07-17 16:40
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册