0

所以我是一个新手。我正在尝试编写一个带有函数的程序

double_product(vector< double > a, vector< double > b) 计算两个向量的标量积。标量积是

$a_{0}b_{0}+a_{1}b_{1}+...a_{n-1}b_{n-1}$。

这就是我所拥有的。这是一团糟,但我正在努力!

#include<iostream>

#include<vector>

using namespace std;

class Scalar_product
{

public:

    Scalar_product(vector<double> a, vector<bouble> b);

};


double scalar_product(vector<double> a, vector<double> b) 
{

   double product = 0;

   for (int i=0; i <=a.size()-1; i++)

       for (int i=0; i <=b.size()-1; i++)

           product = product + (a[i])*(b[i]);

   return product;

}

int main()
{

    cout << product << endl;

    return 0;

}
4

2 回答 2

2

因为我无法发表评论,所以我被迫回复。

显然这里有完全相同的问题,逐字逐句

在 C++ 中计算两个向量的标量积

于 2012-06-06T08:10:25.523 回答
2

从根本上讲,您有一个非常正确的想法。额外的几个基本构建块,您将顺利进行。你的scalar_product功能很接近,但不完全。您已经创建了两个具有相同名称的循环迭代器,用于迭代相同的值。简单地说应该没问题

if (a.size() != b.size()) {} // error
for (int i=0; i < a.size(); i++)
   product = product + (a[i])*(b[i]);

现在您所要做的就是获取一些数据,调用它,然后输出结果。

int main() {
    std::vector<double> a;
    std::vector<double> b;
    // fill with the values
    std::cout << scalar_product(a, b) << endl;
}

整个class事情在这里完全没有必要——您需要的唯一类来自标准库。

于 2012-06-06T04:23:20.280 回答